HTTP 304 Not Modified
Der Cache-Validator: Seit deinem letzten Besuch hat sich nichts geändert, nutze weiter die vorhandene Kopie.
Was HTTP 304 bedeutet
HTTP 304 Not Modified ist die Antwort auf einen bedingten Request. Der Client sagt „Ich habe eine Kopie von diesem Datum“ (If-Modified-Since) oder „mit diesem Fingerabdruck“ (If-None-Match), und der Server bestätigt mit einer 304 ohne Body, dass die Kopie noch aktuell ist.
Dieser Mechanismus — Cache-Revalidierung — macht wiederholte Seitenaufrufe schnell: Der Browser lädt nur neu herunter, was sich geändert hat, und alles andere kostet nur einen kleinen zusätzlichen Roundtrip.
Häufige Ursachen von 304-Antworten
- Der Browser hat eine zwischengespeicherte Seite, ein Skript oder ein Bild revalidiert, und es hatte sich nicht geändert.
- Ein CDN-Edge hat sein gespeichertes Objekt gegen den Origin revalidiert.
- Ein API-Client hat ETags genutzt, um eine Ressource kostengünstig abzufragen.
Gute Praktiken für Entwickler
- Liefere stabile ETag- oder Last-Modified-Header aus, damit Clients überhaupt revalidieren können.
- Sende bei 304 keinen Response-Body — der Client hat ihn explizit bereits.
- Achte auf ETags, die sich bei jeder Antwort ändern (z. B. bei lastverteilten Servern mit Per-Node-Hashes): Sie deaktivieren stillschweigend die Revalidierung.
Beispielantwort
GET /styles.css HTTP/1.1 If-None-Match: "abc123" HTTP/1.1 304 Not Modified ETag: "abc123" Cache-Control: max-age=3600
SEO-Auswirkung
304-Antworten sind gut für die SEO-Performance: Googlebot nutzt bedingte Requests intensiv, und korrekte Revalidierung erlaubt es, für das gleiche Budget mehr von deiner Seite zu crawlen. Defekte Validatoren erzwingen bei jedem Crawl vollständige Neu-Downloads.
FAQ
Ist eine 304-Antwort ein Fehler?
Nein — es ist ein Erfolgssignal, das bedeutet, dass deine zwischengespeicherte Kopie weiterhin gültig ist. Browser behandeln es transparent.
Was löst eine 304-Antwort aus?
Ein Request mit If-None-Match- oder If-Modified-Since-Headern, deren Werte weiterhin zur aktuellen Ressource passen.
Warum sehe ich in den DevTools 304 statt 200?
Der Browser hatte eine zwischengespeicherte Kopie und hat sie revalidiert. Der Status zeigt, dass der Server den Cache bestätigt hat, statt die Datei erneut zu senden.