How to Diagnose Missing 304 Responses

When every request returns 200 despite validators, the conditional request handshake is often broken.

Symptom definition

Diagnostic steps

  1. 1) Use Cache Diagnostic to confirm validator presence in responses
  2. 2) Use If-None-Match Inspect to ensure re-requests include If-None-Match
  3. 3) Use If-Modified-Since Inspect to validate date-based revalidation flow
  4. 4) Use ETag Inspect to check weak/strong ETag handling differences
  5. 5) If CDN is involved, use HTTP Cache Mismatch to isolate layer differences

Common causes

Fix checklist

Tools to use

FAQ

Why does 304 not happen even when ETag is present?
Most commonly, If-None-Match is missing on re-requests or ETag changes across delivery layers.
Can 304 work with Last-Modified only?
Yes. It works if If-Modified-Since round trips correctly. Using ETag together is usually more stable.

Referenced specs

These links are generated from site_map rules in recommended diagnostic order.

  1. Cache Diagnostic — Run cross-header diagnostics for HTTP caching
  2. ETag Inspect — Parse ETag and If-None-Match consistency
  3. If-None-Match Inspect — Parse If-None-Match and inspect revalidation conditions
  4. If-Modified-Since Inspect — Parse If-Modified-Since and inspect conditional retrieval
  5. Last-Modified Inspect — Parse Last-Modified and If-Modified-Since
  6. Cache Response Analyzer — Judge cacheability from response headers
  7. Symptom-Based Diagnostic Guide (Start Here) — A central hub that routes cache/CORS/JWT/MIME incidents into shortest symptom-first diagnostic paths
  8. How to Diagnose Stale Content After Deployment — Check cache policy by HTML/API/static assets to isolate stale deployment issues quickly

Scenario Clusters

Operational incident scenarios that route you into the shortest diagnostic path