Cache Diagnostic
Analyze cache-related headers across layers. No input is sent to a server. Use it for first-pass revalidation and CDN mismatch troubleshooting.
Status
Runs in your browser. No input is sent to a server. Use this as a first-pass diagnostic step.
How to use
Paste response headers and click “Diagnose”. Start with summary, then move to dedicated inspect tools when needed.
Notes (this tool)
- Results are based on pasted headers only. Validate real CDN/path behavior separately.
- no-cache and no-store are different. Separate revalidation behavior from storage policy in analysis.
About this page
What does this tool do?
Evaluate Cache-Control / Expires / Age / ETag / Last-Modified / Vary / Range together.
Debugging workflow (recommended)
- Paste response headers
- Use Summary to judge cache policy
- Inspect details with individual tools if needed
Symptom-based checks (common cases)
- “Updates are not reflected”: check max-age, immutable, and versioned URLs
- “Never getting 304”: verify ETag/Last-Modified with matching If-* headers
- “Behavior differs on CDN”: inspect s-maxage, Age, and Vary
- “Range delivery is unstable”: verify Accept-Ranges, Content-Range, and compression state
Related tools
- Cache-Control Inspect
- Cache Control Overview
- Expires Inspect
- ETag Inspect
- Last-Modified Inspect
- Vary Inspect
- Range Request Builder
Revalidation view (ETag / Last-Modified)
In general, prefer ETag-based revalidation (If-None-Match) when available, with Last-Modified as a fallback.
- Need stronger change detection: prefer ETag
- Lightweight setups may work with Last-Modified only
- If both are emitted, keep them consistent
Recommendations by use case
- API (JSON): no-store or no-cache + validators
- HTML: short max-age + validators / no-cache
- Static assets: long max-age + immutable + versioned URL
Common pitfalls
- Long max-age on HTML delays deployments
- Missing Vary causes mixed caches across language/encoding variants
- Inconsistent ETag generation across paths breaks revalidation
- Confusing no-cache with no-store leads to unexpected behavior
What this tool does
- Judge cacheability/revalidation/shared-cache eligibility
- List validators/Range/compression hints
Operational notes
- Cache behavior changes across browser, CDN, and proxy layers, so compare captures from the same observation point.
- Header-only diagnosis may be insufficient. Also review application cache invalidation strategy and key design.
Referenced specs
- RFC 9111 (HTTP Caching)
- RFC 9110 (HTTP Semantics)
FAQ
Where should I start when 304 never appears?
Start by checking round trips between ETag/Last-Modified and If-* request headers.
Why does behavior differ only through CDN?
Common causes are s-maxage, Vary, compression differences, and validator changes from edge processing.
References
Page-specific case studies
Cross-check headers first to identify which layer (browser, CDN, origin) is causing cache failure.
- Review Cache-Control, ETag, Last-Modified, Vary, and Age together from response headers.
- Compare origin-direct and CDN responses for the same URL.
- Confirm If-None-Match or If-Modified-Since is sent on re-requests.
Page-specific implementation checklist
- Use separate cache policies for HTML, API, and static assets.
- Keep ETag generation consistent across delivery paths.
- Use versioned URLs for long-lived static caching.
- Track Age and Vary as production monitoring metrics.
Next to view (diagnostic order)
These links are generated from site_map rules in recommended diagnostic order.
- Cache Not Working Troubleshooting — Troubleshoot cache-not-working symptoms step by step from headers
- HTTP Cache Mismatch — Identify root causes of cache mismatches
- Cache Response Analyzer — Judge cacheability from response headers
- How to Diagnose Missing 304 Responses — Trace ETag/Last-Modified and If-* round trips to isolate missing 304 behavior
- How to Diagnose Stale Content After Deployment — Check cache policy by HTML/API/static assets to isolate stale deployment issues quickly
- How to choose cache tools — Route stale-update, missing-304, and CDN-only mismatch issues to the right tools
- Cache Key Inspect — Visualize cache-key splits from URL, Vary, and headers
- Cache Control Overview — Summarize how to use Cache-Control/Pragma/Expires together
Same-theme links
Cache Control
Diagnose delivery policy across Cache-Control/Expires/Age
- Cache Not Working Troubleshooting — Troubleshoot cache-not-working symptoms step by step from headers
- HTTP Cache Mismatch — Identify root causes of cache mismatches
- Cache Response Analyzer — Judge cacheability from response headers
- Cache Key Inspect — Visualize cache-key splits from URL, Vary, and headers
- Cache Control Overview — Summarize how to use Cache-Control/Pragma/Expires together
- Cache-Control Inspect — Parse and interpret Cache-Control directives
- Pragma Cache Inspect — Parse Pragma and inspect legacy cache control behavior
- Expires Inspect — Parse Expires and Date to inspect freshness behavior
- Age Inspect — Parse Age to estimate shared-cache residency time