304 Not Modified beantwortet eine bedingte GET- oder HEAD-Anfrage, also eine mit If-None-Match oder If-Modified-Since, wenn die Bedingung zeigt, dass die gespeicherte Kopie des Clients noch aktuell ist. Statt die Ressource erneut zu senden, antwortet der Server mit 304, und der Client verwendet seine Kopie aus dem Cache. Das spart Bandbreite und Zeit.
Eine 304 hat nie einen Body; sie endet mit der Leerzeile nach den Headern. Der Server muss von den Headern Cache-Control, Content-Location, Date, ETag, Expires und Vary diejenigen senden, die auch eine 200 enthalten hätte, damit Caches die gespeicherte Antwort aktualisieren können.
Obwohl 304 im 3xx-Bereich liegt, ist der Code keine Weiterleitung. Es gibt keinen Location-Header, und der Client bleibt auf derselben URL. Ein Client, der eine 304 erhält, ohne eine bedingte Anfrage gesendet zu haben, hat es mit einem fehlerhaften Server zu tun.
Beispielantwort
HTTP/1.1 304 Not Modified
Date: Fri, 06 Nov 2026 10:15:32 GMT
ETag: "5f2b-1a3c"
Last-Modified: Wed, 28 Oct 2026 08:02:11 GMT
Cache-Control: public, max-age=600
Vary: Accept-Encoding SEO und Weiterleitungsprüfung
304 hilft beim Crawling. Die Crawler von Google unterstützen bedingte Anfragen, und eine 304 teilt dem Googlebot mit, dass sich der Inhalt seit dem letzten Crawl nicht geändert hat. Das spart Crawl-Kapazität und Serverlast, während die Seite ihren Platz im Index behält. Zuverlässige ETag- oder Last-Modified-Header lohnen sich daher, vor allem bei großen Websites.
TrueURL sendet standardmäßig keine bedingten Header, Sie sehen also 200 statt 304. Um die Revalidierung zu testen, fügen Sie unter „Benutzerdefinierte Anfrage-Header“ einen If-None-Match-Header mit dem ETag der Seite hinzu.
Häufige Ursachen und Einsatzzwecke
- Ein Browser revalidiert eine zwischengespeicherte Seite, ein Bild oder ein Skript mit
If-None-Match, und dasETagstimmt noch überein. - Ein Crawler oder Feedreader ruft erneut mit
If-Modified-Sinceab, und es hat sich nichts geändert. - Besucher sehen nach einem Deployment veraltete Inhalte, weil der Server weiter mit 304 antwortet: Seine Validatoren haben sich nicht geändert, etwa ein
ETagaus Dateigröße und Änderungszeit, die das Deployment unverändert gelassen hat. Sorgen Sie dafür, dass sich die Validatoren immer mit dem Inhalt ändern.