Visual RFC.
ALL RFCs / RFC 9211
Read the RFC ↗
RFC 9211 / HTTP CACHE-STATUS

Separate hits, freshness and next-hop status

02

Freshness, forwarding and storage are independent facts reported by different parameters.

RFC 9211 · § 2.1EXAMPLE
4 / 4
Separate hits, freshness and next-hop statusWorked freshness timeline has lifetime40seconds with ages10 and45, giving ttl30 and minus5; latter assumes explicit stale permission and no prohibition, so both are local hits. Separate revalidation sends conditional request cache to next hop, receives304, returns200to client and reports fwd-status304. Separate no-store200forward has stored false and omitted fwd-status defaults200. Reporting does not override reuse or storage rules.Hit, freshness, forwarding and storage differClientEdgeCacheNext hop200 · Cache-Control: no-store200 responseno-store blocks storageEdgeCache; fwd=uri-miss; stored=?0No fwd-status: default is the sent status, 200
04
Let omitted fwd-status default to the client status.

Separate URI miss receives a200response with Cache-Control:no-store. Cache forwards it to the client but does not store it. Report fwd=uri-miss; stored=?0. With no explicit fwd-status, the reported next-hop status defaults to200.

Source for this drawing: RFC 9211 · Read RFC section 2.1 ↗

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
New to this? Start hereA quick picture + helpful background

A request starts a conversation.

A client asks for a resource. A server sends a response. The method, address, headers, and status explain what that conversation means.

Helpful first, if these ideas are unfamiliar

These pictures are analogies to help you learn. The linked RFC explains the actual rules.

Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

KEY POINT

A hit means no forwarding for this request; it need not mean fresh.

  • hit is a Boolean. When true, the cache satisfied the request without forwarding. A permitted stale response can be a hit; a stored response that needed validation is not a hit. hit and fwd are exclusive; only one should appear on a member.
  • ttl is an Integer number of remaining freshness seconds calculated by this cache close to sending response headers. It can include heuristic or locally assigned freshness and may be negative. It is not DNS TTL or necessarily the original max-age.
  • fwd-status is an Integer next-hop status, meaningful only with fwd. If omitted while fwd is present, it defaults to the status sent to the client. A next-hop304 can therefore be distinguished from a client-facing200.
  • stored is a Boolean meaningful only with fwd. True says the resulting response was stored; false says it was not. Forwarding alone does not guarantee storage.
  • The stale-hit example assumes max-stale=10 permits a response stale by5seconds and no other directive forbids reuse. The no-store example follows RFC9111: reporting Cache-Status does not override storage restrictions.
DETAILS

The time scale is a worked example: freshness lifetime40, ages10/45 and stale allowance10seconds are chosen inputs. These examples explain reports, not all HTTP caching eligibility rules.

Read the RFC section ↗

All chapters in RFC 9211

Drawing view

Scroll the drawing to see every part. Playback controls stay above it.

RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗