Cache Policy Signal Test
The Cache Policy Checker inspects the Cache-Control, Expires, ETag and Last-Modified headers on every asset returned by a URL, then reports which assets are cacheable, for how long, and whether the policy matches modern…
- Results in seconds
- Pass / fail + fix guidance
- No account required
The Cache Policy Checker inspects the Cache-Control, Expires, ETag and Last-Modified headers on every asset returned by a URL, then reports which assets are cacheable, for how long, and whether the policy matches modern best practice. Aggressive caching of static assets is a free speed and bandwidth win — versioned assets can be cached forever, HTML can be cached briefly with stale-while-revalidate. Most sites either under-cache (forcing re-downloads) or over-cache (breaking deploys).
What This Tool Checks
- Cache-Control directives per asset type
- max-age and s-maxage values
- immutable directive on versioned assets
- stale-while-revalidate for HTML
- ETag and Last-Modified presence
- no-cache vs no-store vs private
- CDN-level caching vs browser caching
Why It Matters for SEO
Caching is the single highest-leverage performance pattern in HTTP. A correctly cached static asset costs zero bytes and zero milliseconds on repeat visits. A versioned asset (with a hash in the filename) can be cached for one year with the immutable directive, eliminating revalidation entirely. HTML can use stale-while-revalidate to serve instant responses while updating in the background. Most sites are leaving 30-60% of repeat-visit performance on the table due to weak cache policies.
How to Fix It
For versioned static assets (CSS, JS, fonts with hash filenames): Cache-Control: public, max-age=31536000, immutable. For images: max-age=2592000 (30 days). For HTML: max-age=0, must-revalidate, stale-while-revalidate=86400. Set s-maxage on the CDN longer than max-age on the browser. Always include ETag.
How It Works
We fetch the page and a sample of its sub-resources, capture the Cache-Control / Expires / ETag headers on each, and classify the cacheability per asset type (HTML, CSS, JS, image, font, JSON). Mismatches between asset type and cache policy are flagged with concrete header recommendations.
Common Mistakes to Avoid
- No Cache-Control header at all (browsers cache for unpredictable durations)
- Cache-Control: no-cache on every asset (forces revalidation every time)
- Versioned assets cached for only an hour (should be 1 year + immutable)
- HTML cached aggressively, breaking content updates
- CDN cache TTL shorter than asset lifetime, defeating the CDN
Quick Checklist
- Versioned static assets: max-age=1 year + immutable
- Images: max-age=30 days minimum
- HTML: short max-age plus stale-while-revalidate
- ETag present for revalidation
- CDN cache TTL aligns with asset lifetime
Put your whole site on autopilot — SEO and AI search
PositionMySite monitors every signal on this page across your entire website 24/7 — plus keyword rankings, competitor moves and AI-search readiness (llms.txt, schema, ChatGPT & Gemini visibility). When something breaks, you know before Google does.
Every feature unlocked · No commitment · Cancel anytimeFrequently Asked Questions
Versioned assets (with a hash in the filename) can be cached for 1 year with the immutable directive. Unversioned assets should cache for shorter periods to allow updates.
Tells the browser the response will never change during its max-age, so the browser skips revalidation entirely. Use only on versioned assets where the URL changes when the content changes.
Briefly, with stale-while-revalidate. This serves cached HTML instantly while fetching a fresh copy in the background, giving you both fast loads and fresh content within seconds.
no-cache means the response can be cached but must be revalidated before reuse. no-store means do not cache at all. Use no-store only for sensitive responses; no-cache is fine for frequently changing content.
Yes, indirectly. Strong caching means faster repeat visits, lower bounce rates and better Core Web Vitals scores from real-user (CrUX) data — all of which feed Google's page-experience ranking signal.