Separate hits, freshness and next-hop status
02Freshness, forwarding and storage are independent facts reported by different parameters.
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 ↗
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.
Terms in this drawing
Related RFCs and changes
“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.
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.
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 ↗