304 Not Modified

All status codes
3xx · Redirectionterminal

304Not Modified

Indicates that the resource has not been modified since the version specified by the request headers If-Modified-Since or If-None-Match.

What this code obliges you to do

Retry

Do not retry automatically

Repeating the same request produces the same result. A retry loop here just multiplies load and hides the real fault.

Caching

Not cacheable by default

Caches will not store this response unless you send explicit freshness headers saying they may.

Response body

Must not send a body

This status must be sent with no body at all. Clients and proxies will mis-frame the next response on a connection if you send one.

When you see it

2
1

Client requesting a cached asset

2

ETag matches existing resource

Effect on search

Excellent for crawl budget optimization. Tells Googlebot the page hasn't changed so it can focus on other pages.

How to send it

1
Node.js (Express)
// Usually automatically handled by Express via ETag.

Codes people confuse with this one

1
Class3xx
RetryNo
CacheNo
BodyNone