HTTP status code 304 — Not Modified
Quick answer
Status code 304 (Not Modified): Cached copy is still valid. Response to conditional GET with If-None-Match / If-Modified-Since.
Response to conditional GET with If-None-Match / If-Modified-Since.
304 has no body — the client should reuse its cached representation. Wire ETag or Last-Modified correctly on the origin.
Common causes
- Browser or CDN revalidating a cached asset
- A client explicitly sending If-None-Match on a polling request
How to fix it
This is expected behavior, not an error — use your cached copy. If you always want fresh data, drop the conditional headers.
Frequently asked questions
What is status code 304?
304 Not Modified: Cached copy is still valid. Response to conditional GET with If-None-Match / If-Modified-Since.
When should I expect HTTP 304?
304 has no body — the client should reuse its cached representation. Wire ETag or Last-Modified correctly on the origin.
What usually causes HTTP 304?
Browser or CDN revalidating a cached asset; A client explicitly sending If-None-Match on a polling request.
How do I fix HTTP 304?
This is expected behavior, not an error — use your cached copy. If you always want fresh data, drop the conditional headers.
Where can I see all status codes?
Open the HTTP status codes hub on TryDevSnip for the full reference list.
Does TryDevSnip log my API traffic?
No. These pages are static reference. TryDevSnip does not proxy or inspect your HTTP calls.