What it means
The browser sends a conditional request with If-None-Match (ETag) or If-Modified-Since. If the resource hasn't changed, the server returns a 304 with no body and the browser uses its local copy. This saves bandwidth and speeds up loading.
Most common causes
- A repeat visit to a page or file that is already cached.
- Correctly configured ETag or Last-Modified headers.
- A CDN revalidating its cached copy with the origin.
What you can do as a visitor
- A 304 is not an error. If you see an old version of the page, do a hard refresh (Ctrl+F5) to bypass the conditional request.
What the site owner or developer should do
- Make sure the ETag changes whenever the content changes.
- For static files, use versioned URLs (style.css?v=2) with a long Cache-Control.
- Don't return 304 to requests without conditional headers.
Impact on SEO and Google
Googlebot supports conditional requests. Correct 304s reduce server load and can improve crawl efficiency on large sites.
Frequently asked questions
Is a 304 an error?
No. It means the cached copy is still valid.
Why am I seeing an old version of the page?
The cache or CDN didn't detect the change. A hard refresh or purging the CDN cache helps.