How to Diagnose Stale Content After Deployment
Stale content after deployment can come from policy mistakes, layer mismatches, or weak invalidation operations.
First split to make
- Is stale data on HTML, API responses, or static assets?
- Is it stale in browser only, CDN path only, or both?
- Is it stale only on first access or continuously stale?
Diagnostic steps
- 1) Classify symptoms with Cache Not Working Troubleshooting
- 2) Confirm single-response policy using Cache Response Analyzer
- 3) Compare browser/CDN/origin behavior with HTTP Cache Mismatch
- 4) Validate no-store/no-cache/max-age/immutable using Cache-Control Inspect
- 5) Reconcile policy by resource type via Cache Control Overview
Recommended policy by resource type
- HTML: short TTL + validators (deployment freshness first)
- API: no-store for sensitive data; validators for public data
- Static assets: versioned URL + long max-age + immutable
- CDN: separate s-maxage from browser-facing policy
Operational bottlenecks
- Applying immutable without URL versioning
- Missing purge targets or purge steps on CDN
- Headers are overwritten on delivery path and diverge from intended policy
- Inconsistent observation points cause noisy comparisons
Post-fix verification
- Confirm fresh content on same URL across browser/CDN/origin
- Confirm expected revalidation (304) or refetch behavior on revisit
- Ensure post-deploy freshness delay stays within SLO
Tools to use
- Cache Not Working Troubleshooting
- Cache Response Analyzer
- HTTP Cache Mismatch
- Cache-Control Inspect
- Cache Control Overview
- Cache Diagnostic
FAQ
- What should I check first when updates appear late?
- First isolate whether HTML, API, or static assets are stale, then review policy for that specific layer.
- Is it safe to always add immutable?
- Only with URL versioning. On fixed URLs, immutable can delay visible updates.
Referenced specs
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 Control Overview — Summarize how to use Cache-Control/Pragma/Expires together
- Cache-Control Inspect — Parse and interpret Cache-Control directives
- Cache Response Analyzer — Judge cacheability from response headers
- Cache Diagnostic — Run cross-header diagnostics for HTTP caching
- Symptom-Based Diagnostic Guide (Start Here) — A central hub that routes cache/CORS/JWT/MIME incidents into shortest symptom-first diagnostic paths
- How to Diagnose Missing 304 Responses — Trace ETag/Last-Modified and If-* round trips to isolate missing 304 behavior
Same-theme links
Scenario Clusters
Operational incident scenarios that route you into the shortest diagnostic path
- Symptom-Based Diagnostic Guide (Start Here) — A central hub that routes cache/CORS/JWT/MIME incidents into shortest symptom-first diagnostic paths
- How to Diagnose Missing 304 Responses — Trace ETag/Last-Modified and If-* round trips to isolate missing 304 behavior
- How to Diagnose CORS Preflight Failures — Fix preflight failures by validating OPTIONS responses, Allow-* directives, and origin rules in order
- JWT 401/403 Diagnostic Playbook — Separate 401 and 403 using Authorization, WWW-Authenticate, claims, and signature checks
- How to Diagnose Retry Storms on 429/503 — Isolate Retry-After parsing and client implementation gaps to stop excessive retries
- How to Diagnose JS/CSS Blocks from nosniff Mismatch — Trace Content-Type vs nosniff mismatches, fallback responses, and delivery-layer rewrites
- How to Diagnose Set-Cookie Not Persisting — Isolate cookie persistence failures by checking Domain/Path/Secure/SameSite in order
- How to Diagnose Lost Login After OAuth Return — Isolate cookie-delivery failures after IdP return across SameSite, Secure, Path/Domain, and collisions
- How to Diagnose Same-Name Cookie Collisions — Resolve unstable behavior by tracing same-name cookie path/domain variants, overwrite order, and send collisions
- Cookie Incident Operational Checklist — Standardize response from triage to permanent fixes across storage failures, OAuth return issues, and same-name collisions