3xx Redirection

HTTP 304 Not Modified

HTTP 304 Not Modified means the cached copy is still valid, so the server sends no body and the client reuses its cache.

What 304 Not Modified means

A 304 is the answer to a conditional request with If-None-Match (ETag) or If-Modified-Since. It saves bandwidth and time. Express adds ETags to responses by default, so you often see 304s for repeated API calls in DevTools.

Common causes

  • The ETag sent by the client matches the current one.
  • The resource has not changed since the If-Modified-Since date.

How to fix or use it

Nothing to fix: it is a cache hit. If you see stale data, check that the ETag changes when the content changes, or send Cache-Control: no-store for data that must never be reused.

Express (Node.js) example

// Express sets ETag automatically; disable only if you have a reason to
app.set('etag', 'strong');

SEO impact

Good for crawling: Googlebot sends conditional requests, and 304 lets it skip unchanged pages and spend its crawl budget on new ones.

Other 3xx Redirection codes