Age header

The Age header tells you how long a response has been sitting in a cache, in seconds. age: 0 (or no Age header) usually means the response just came from the origin; age: 8412 means you're looking at a copy cached 2 hours 20 minutes ago. It's the fastest single signal for "did this come from cache?"

Reading it in practice

$ curl -sI https://example.com/ | grep -iE 'age|cache'
age: 8412
cache-control: public, max-age=60, s-maxage=86400
cf-cache-status: HIT

Cross-referencing Age with Cache-Control tells you where in its life the copy is: here the object is 8,412 s into an 86,400 s s-maxage — about 10% through its edge lifetime. An Age just below the TTL means the next request may trigger revalidation or a miss.

Nuances worth knowing

Related terms

Freshness lifetime comes from TTL; what happens at expiry is shaped by stale-while-revalidate; validation without re-download uses ETags.