HTTP caching · RFC 9111
Will this response be cached — and for how long?
Paste the Cache-Control, Expires, ETag and Vary
headers; CacheLens tells you what the browser and a CDN each do with them,
the freshness lifetime, when it revalidates, and any contradictions — instantly, in your browser.
Tip: curl -I https://example.com/ or DevTools → Network → Response Headers.
Stored and served fresh for 1 year. While fresh it is reused without revalidation ("immutable"). When stale it is revalidated (a 304 keeps the copy).
Stored and served fresh for 1 year.
- ✓"immutable": while fresh, browsers skip revalidation even on reload — ideal for fingerprinted static assets.
- ✓Directives are consistent and cacheable. Looks good.
Static analysis of the headers you paste, per RFC 9111. No request is made; real cache behavior also depends on method, status, and request headers.
How CacheLens reads your headers
- Storability: "no-store" blocks all caching; "private" limits storage to the browser; "Vary: *" blocks shared caches.
- Freshness: shared = s-maxage → max-age → Expires−Date; browser = max-age → Expires−Date.
- Revalidation: "no-cache" checks the server before every reuse; "must-revalidate" forbids serving stale; "immutable" skips revalidation while fresh.
- Validators: an ETag or Last-Modified lets a stale copy refresh with a cheap 304 instead of refetching the whole body.
It is a static read of the response headers per RFC 9111. It does not fetch anything, and actual
behavior also depends on the request method, the status code, request headers (like Authorization),
and each cache's own policy.
Questions
What does CacheLens check?
Paste a response's caching headers — Cache-Control, Expires, Date, Age, ETag, Last-Modified, Vary, Pragma — and it tells you, in plain English, whether a browser and a shared (CDN/proxy) cache will store the response, how long it stays fresh, when it revalidates, and any contradictions. It follows the response-side rules of RFC 9111.
Why are "browser" and "shared" cache shown separately?
They obey different directives. "private" lets only the browser store the response; "s-maxage" sets the freshness for shared caches and overrides "max-age" there; "Vary: *" blocks shared caching entirely. Splitting them shows exactly what your CDN does versus what the visitor's browser does.
How is the freshness lifetime calculated?
Shared caches use s-maxage, else max-age, else Expires minus Date. Browsers use max-age, else Expires minus Date. Expires is only resolved when you paste both the Expires and Date headers, since freshness is measured from the response Date. With none of these, caches fall back to heuristics.
Does anything get sent to a server?
No. All parsing and analysis run entirely in your browser. Nothing you paste leaves the page — there is no backend and no logging.
How do I get a response's headers?
Run "curl -I https://example.com/asset", or open your browser DevTools → Network → click the request → Response Headers, and copy the lines. Paste them as-is; non-caching headers are ignored.