Observe, decide, and act panels beside a headline about cache headers as a two-way contract.

Cache headers are a two-way contract with browsers

An origin defines storage and freshness policy; a cache decides whether its stored response can satisfy the next request. When it cannot reuse that response directly, validators can make checking cheaper. These are separate decisions. Finding Cache-Control and ETag in one successful response does not prove that the next request follows the intended path. ...

July 15, 2026 · 5 min · XB Field Notes
An old URI permanently redirected to a new URI with status 308.

Redirects and error codes should preserve the story

Check the method, Location header, and cache behavior before choosing a redirect or an error status.

July 14, 2026 · 2 min · XB Field Notes
A long byte sequence with one bounded segment selected for a partial response.

Range requests should prove which bytes were selected

A 206 response is useful only when its boundaries and total size describe the bytes that were returned.

July 6, 2026 · 3 min · XB Field Notes
A request line naming a method checked against the side effects a static origin is allowed to promise.

HTTP methods are a promise about side effects

Get the method boundary right once, and OPTIONS, HEAD, and idempotent writes stop being a surprise.

July 2, 2026 · 3 min · XB Field Notes
A cache and an origin trading a validator string to decide whether a stored response is still fresh.

Validators decide whether a cached copy is still the answer

Conditionals are the cache’s second clock; a 304 means the stored copy is still the answer.

June 30, 2026 · 3 min · XB Field Notes
A large HTTP representation compressed into a smaller transfer.

Compression changes the selected HTTP representation

Test compressed and uncompressed requests separately so caches and validators describe the bytes actually served.

June 29, 2026 · 2 min · XB Field Notes
A cache and origin exchanging validators beneath a freshness clock.

Cache headers are a contract with two clocks

Separate browser freshness from origin validation, then verify the response headers that implement both.

June 25, 2026 · 3 min · XB Field Notes
GET and HEAD requests aligned to the same response metadata while only GET carries a body.

HEAD should describe the same representation as GET

HEAD is a metadata view of GET; status and representation headers should tell the same story.

June 22, 2026 · 2 min · XB Field Notes