devkult_
tools29converters34

Age

response headercaching

How many seconds a response has been sitting in a shared cache such as a CDN.

When a CDN or proxy serves a response from its cache, it adds Age: the number of seconds since the response was fetched or revalidated from the origin. No Age header, or Age: 0, usually means the response came straight from the origin. A cached response stays fresh while Age is below its max-age (or s-maxage).

Syntax

Age: <seconds>

Defined in RFC 9111 §5.1 — Age.

Examples

Age: 120

cached two minutes ago

Age: 0

just fetched from the origin

Good to know

  • Remaining freshness is roughly max-age minus Age — a response with max-age=300 and Age: 280 goes stale in 20 seconds.
  • Browsers count Age too, so content that sat on a CDN for a while expires sooner in the browser.
  • CDN-specific headers such as cf-cache-status and x-vercel-cache report HIT or MISS more directly.

Further reading: HTTP caching explained

Who sets Age

Caches add Age themselves; origin servers don't set it. Check it with curl -sI https://example.com/ | grep -i '^age:' — run it twice on a cached URL and watch it grow.

Check it

Fetch only the response headers and filter for Age. In the browser, it's under Response Headers in DevTools → Network.

curl -sI https://example.com/ | grep -i '^age:'

To compare response headers across many URLs at once, use the HTTP Status Checker.

Frequently asked questions

Why does a response with max-age=3600 go stale in my browser after a few minutes?

If it had already sat in a CDN cache for most of the hour, the Age header says so, and the browser subtracts it from max-age.

Related headers