DevToolPal
EN
3xx Redirection

304 Not Modified

What it means

The cached copy the client already has is still valid, so the server sends no body. It answers a conditional request with If-None-Match or If-Modified-Since.

Common causes

  • The ETag in If-None-Match matches the current version
  • The resource did not change since If-Modified-Since
  • A browser revalidating a cached asset

How to fix it

As a client or visitor

Use the cached body. If content looks stale, the validator may be wrong; force a reload or check ETag generation.

As the site or API owner

Generate stable ETags (identical across servers behind a load balancer) and send the same caching headers you would send with 200.

Example response

HTTP/1.1
HTTP/1.1 304 Not Modified
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
ETag: "33a64df5"
Cache-Control: max-age=3600

Specification

RFC 9110 §15.4.5

FAQ

› Is 304 an error?

No. It saves bandwidth by telling the client its cache is up to date.

› Why do users see old files after a deploy?

Cache headers allow stale copies. Use fingerprinted file names for assets and short max-age with validation for HTML.