Sie surfen heute zum dritten Mal auf Ihrer bevorzugten Nachrichten-Website. Sie klicken auf Aktualisieren, und die Seite lädt fast sofort. Im Hintergrund hat Ihr Browser das Logo der Website, das CSS-Stylesheet oder die JavaScript-Dateien nicht tatsächlich erneut heruntergeladen. Er hatte sie bereits. Er hat lediglich beim Server überprüft, ob sie sich geändert hatten, und der Server gab eine einfache, einzeilige Antwort: 304 Not Modified.
Dieser winzige, effiziente Statuscode ist einer der unbesungenen Helden der Webleistung. Er ist der Grund, warum sich das moderne Web schnell und reaktionsschnell anfühlt. Er ist die Grundlage des Caching und spart täglich Milliarden von Gigabytes an Bandbreite. Auf den ersten Blick mag er nicht so aufregend erscheinen wie eine Weiterleitung oder ein Fehlercode, aber glauben Sie mir, er ist eines der mächtigsten Werkzeuge, um Websites und APIs schneller und effizienter zu machen.
Der 304 ist kein Fehler; er ist eine erfolgreiche, effiziente Bestätigung. Es ist die Art des Servers zu sagen: „Sie haben die neueste Version dieser Datei bereits lokal gespeichert. Ich muss sie nicht erneut senden. Verwenden Sie einfach das, was Sie haben.“
In diesem Blogbeitrag werden wir uns eingehend damit befassen, was 304 Not Modified bedeutet, wie es funktioniert, warum es wichtig ist und wie Entwickler es nutzen können, um schnellere, reaktionsschnellere Websites und APIs zu erstellen. Wenn Sie Entwickler sind, ist das Verständnis der Funktionsweise von 304 entscheidend für den Aufbau schneller, effizienter und skalierbarer Anwendungen.
Bevor wir eintauchen: Wenn Sie testen und erkunden möchten, wie Ihre Webserver oder APIs auf Antworten wie 304 Not Modified reagieren, stellen Sie sicher, dass Sie Apidog kostenlos herunterladen. Apidog ist ein leistungsstarkes API-Test- und Dokumentationstool, das Ihnen hilft, HTTP-Antworten zu erkunden, Antworten zu validieren und Ihr Backend wie ein Profi zu optimieren. Das Beste daran ist, dass es kostenlos heruntergeladen werden kann. Beginnen Sie noch heute mit der Optimierung Ihrer APIs.
Tauchen wir nun tief in den HTTP-Statuscode 304 Not Modified ein und sehen wir, warum er so wichtig ist.
Das Problem: Verschwenderische Datenübertragung
In den frühen Tagen des Webs funktionierte jede einzelne Anfrage auf die gleiche Weise:
- Browser: „Gib mir
/logo.png.“ - Server: „Hier ist es!“ (
200 OK+ die vollständigen Bilddaten) - Browser (2 Sekunden später): „Gib mir
/logo.pngerneut.“ - Server: „Hier ist es wieder!“ (
200 OK+ die exakt gleichen Bilddaten)
Das war unglaublich verschwenderisch. Dasselbe Logo, Stylesheet und dieselben Skripte wurden Dutzende Male am Tag für einen einzelnen Benutzer über das Netzwerk übertragen, was Bandbreite verbrauchte und das Laden von Seiten verlangsamte.
Die Lösung für diese Ineffizienz ist ein zweiteiliger Prozess: Caching und bedingte Anfragen, wobei der 304-Statuscode der Star der Show ist.
Was bedeutet HTTP 304 Not Modified eigentlich?
Der Statuscode 304 Not Modified ist eine umleitungsähnliche Antwort, die anzeigt, dass der Server die angeforderte Ressource nicht übertragen muss, da der Client bereits eine aktuelle Version in seinem lokalen Cache hat.
Es ist eine Erfolgsmeldung mit einem leeren Body. Der Server sagt im Wesentlichen: „Ihre Anfrage war erfolgreich. Die von Ihnen angeforderte Ressource ist unverändert. Ich habe Ihnen nichts Neues zu senden.“
Mit anderen Worten, anstatt Bandbreite zu verschwenden, indem immer wieder dieselben Daten gesendet werden, antwortet der Server einfach mit einer leichten Bestätigung.
Eine typische 304-Antwort ist wunderschön minimal:
HTTP/1.1 304 Not ModifiedCache-Control: public, max-age=300ETag: "a3c8d7e1f5g2"Date: Sat, 28 Oct 2023 10:00:00 GMT
Beachten Sie, was fehlt? Der Antwort-Body. Es gibt keine Bilddaten, kein CSS, kein JSON. Das macht den 304 so effizient. Die gesamte Antwort besteht nur aus wenigen hundert Bytes an Headern, wodurch die Megabytes an Daten gespart werden, die sich im Body befunden hätten.
Warum existiert 304? (Eine kurze Geschichte)
In den frühen Tagen des Webs hat der Browser jedes Mal, wenn Sie eine Webseite geladen haben, alles – HTML, CSS, Bilder, Skripte – von Grund auf neu abgerufen. Das war langsam und verschwenderisch.
Um dies zu lösen, führte HTTP Caching-Mechanismen ein wie Last-Modified und ETag. Der 304-Statuscode wurde entwickelt, um:
- Bandbreite sparen.
- Serverlast reduzieren.
- Antwortzeiten beschleunigen.
Es wurde ein Standard in HTTP/1.1 und ist bis heute ein Eckpfeiler der Webleistung.
Warum 304 Not Modified wichtig ist
Stellen Sie es sich so vor: Jedes Mal, wenn ein Benutzer eine Website besucht oder eine API-Ressource anfordert, kann das Herunterladen des gesamten Inhalts jedes Mal langsam und verschwenderisch sein, insbesondere für mobile Benutzer oder bei langsamen Verbindungen. Durch die Nutzung von 304 Not Modified:
- Es reduziert unnötige Datenübertragungen, sodass Benutzer Seiten schneller laden und Anbieter Bandbreite sparen.
- Es verringert die Serverlast, da der Server nicht wiederholt vollständige Antworten senden muss.
- Es verbessert die Benutzererfahrung durch schnellere Ladezeiten und reibungslosere Navigation.
- Es unterstützt die Skalierbarkeit durch effiziente Bearbeitung wiederholter Anfragen.
Ohne 304 wäre Caching ineffektiv und Websites langsamer.
Der Zweischritt-Tanz: Wie Caching und 304 zusammenarbeiten
Der 304 funktioniert nicht allein. Er ist Teil eines eleganten Tanzes zwischen Client und Server.
Schritt 1: Die erste Anfrage (Die „Seed“-Anfrage)
Wenn ein Browser zum ersten Mal eine Ressource anfordert, antwortet der Server mit zwei entscheidenden Informationen neben den Daten (200 OK):
ETag (Entitäts-Tag): Ein eindeutiger Bezeichner, wie ein Fingerabdruck, für die aktuelle Version der Ressource. Dies ist oft ein Hash des Dateiinhaltes. Wenn sich die Datei ändert, ändert sich auch der ETag.
ETag: "a3c8d7e1f5g2"
Last-Modified: Das Datum und die Uhrzeit der letzten Änderung der Ressource.
Last-Modified: Sat, 28 Oct 2023 09:00:00 GMT
Der Browser speichert die Ressource *und* diese beiden Validatoren in seinem Cache.
Schritt 2: Die nachfolgende Anfrage (Die „bedingte“ Anfrage)
Wenn der Browser dieselbe Ressource erneut benötigt (z. B. der Benutzer besucht eine andere Seite derselben Website), fragt er nicht einfach blind danach. Er stellt eine bedingte Anfrage, indem er die gespeicherten Validatoren einbezieht.
Dies kann auf zwei Arten geschehen:
Verwendung des If-None-Match-Headers (mit dem ETag):
GET /logo.png HTTP/1.1Host: www.example.comIf-None-Match: "a3c8d7e1f5g2"
Diese Anfrage besagt: „Bitte senden Sie mir /logo.png nur, wenn sein aktueller ETag sich von dem unterscheidet, den ich bereits habe (a3c8d7e1f5g2).“
Verwendung des If-Modified-Since-Headers (mit dem Datum):
GET /logo.png HTTP/1.1Host: www.example.comIf-Modified-Since: Sat, 28 Oct 2023 09:00:00 GMT
Diese Anfrage besagt: „Bitte senden Sie mir /logo.png nur, wenn es seit dem 28. Oktober geändert wurde.“
Schritt 3: Die Entscheidung des Servers
Der Server empfängt diese bedingte Anfrage und überprüft die Ressource.
- FALL A: Die Ressource ist UNVERÄNDERT. Der Server sieht, dass der aktuelle ETag immer noch mit
"a3c8d7e1f5g2"übereinstimmt. Er antwortet mit einem304 Not Modifiedund sendet die Ressourcendaten nicht. - FALL B: Die Ressource ist GEÄNDERT. Der Server sieht, dass der ETag nicht mehr übereinstimmt. Er antwortet mit einem
200 OK, den vollständigen Ressourcendaten und neuenETag- undLast-Modified-Headern, die der Browser cachen soll.
Dieser elegante Handshake stellt sicher, dass Daten nur dann übertragen werden, wenn es unbedingt notwendig ist.
Die Rolle von HTTP-Headern in 304-Antworten
Die Magie von 304 liegt in den Headern. Zwei Hauptakteure sind:
- Last-Modified → teilt Clients mit, wann die Ressource zuletzt aktualisiert wurde.
- ETag (Entitäts-Tag) → ein eindeutiger Bezeichner für die Version der Ressource.
Wenn der Client If-Modified-Since oder If-None-Match sendet, überprüft der Server:
- Wenn unverändert → gibt 304 zurück.
- Wenn geändert → gibt 200 OK mit der neuen Ressource zurück.
Was sind ETag und Last-Modified?
- ETag (Entitäts-Tag): Ein eindeutiger Bezeichner (oft ein Hash), der die Version einer Ressource darstellt.
- Last-Modified: Der Zeitstempel, der angibt, wann die Ressource zuletzt geändert wurde.
Clients senden diese Werte als bedingte Header bei wiederholten Anfragen, um zu überprüfen, ob sich der Inhalt geändert hat.
Häufige Anwendungsfälle für 304-Antworten
- Websites mit statischen Assets (CSS, JS, Bilder).
- REST-APIs, die große JSON-Ergebnisse zurückgeben.
- Mobile Apps, die auf Server-Synchronisierung angewiesen sind.
- CDNs, die die Inhaltsbereitstellung optimieren.
- Optimierung des Suchmaschinen-Crawlins.
Beispiel eines 304-Workflows
Hier ist ein vereinfachtes Beispiel zwischen einem Browser und einem Server:
Erste Anfrage
textGET /styles.css HTTP/1.1 Host: example.com
Erste Antwort
`textHTTP/1.1 200 OK ETag: "abc123" Last-Modified: Tue, 15 Sep 2025 11:00:00 GMT Content-Type: text/css
/* CSS styles here */`Nachfolgende Anfrage
textGET /styles.css HTTP/1.1 Host: example.com If-None-Match: "abc123" If-Modified-Since: Tue, 15 Sep 2025 11:00:00 GMT
Serverantwort (Keine Änderung)
textHTTP/1.1 304 Not Modified
Da der Server angibt, dass sich der Inhalt nicht geändert hat, verwendet der Browser seine zwischengespeicherte Kopie.
Warum nicht einfach immer zwischengespeicherte Inhalte bereitstellen?
Eine gute Frage!
Wenn Clients immer zwischengespeicherte Inhalte ohne Validierung verwenden würden, könnten sie Updates oder Änderungen verpassen, die für die Korrektheit unerlässlich sind. Der 304-Mechanismus stellt sicher, dass Clients bei Bedarf aktualisierte Ressourcen erhalten, während verschwenderische Übertragungen vermieden werden, wenn sich nichts geändert hat.
SEO und 304 Not Modified
Aus SEO-Sicht helfen 304-Antworten Suchmaschinen, Ihre Website effizienter zu crawlen. Sie reduzieren die Bandbreitennutzung und verbessern Crawl-Budgets, indem sie „keine Inhalte“-Antworten für unveränderte Seiten bereitstellen, wodurch Suchmaschinen sich auf neue Inhalte konzentrieren können.
Warum ist 304 so wichtig? Die Vorteile
- Blitzschnelle Ladezeiten: Der Browser kann eine Seite anzeigen, ohne jedes einzelne Asset erneut herunterladen zu müssen. Er kann seine zwischengespeicherten Versionen sofort nach einer schnellen
304-Überprüfung verwenden. - Massive Bandbreiteneinsparungen: Dies ist der größte Vorteil. Das Senden einer
304-Antwort anstelle einer200-Antwort mit einem großen Body spart eine enorme Menge an Netzwerkverkehr sowohl für den Benutzer als auch für den Server. - Reduzierte Serverlast: Server sparen CPU-Zyklen und I/O-Operationen, indem sie dieselbe Datei nicht Tausende Male pro Sekunde von der Festplatte lesen und senden müssen.
- Bessere Benutzererfahrung: Schnellere Websites sorgen für zufriedenere Benutzer.
- Kostenreduzierung: Für Unternehmen, die für Bandbreite bezahlen (wie Cloud-Hosting-Rechnungen), spart die Reduzierung des Datentransfers direkt Geld.
Häufige Probleme im Zusammenhang mit 304 Not Modified
- Falscher oder fehlender ETag/Last-Modified: Führt dazu, dass Clients Updates verpassen oder unnötig erneut herunterladen.
- Statische Dateien nicht richtig versioniert: Verhindert die Cache-Validierung.
- Proxys oder CDNs, die bedingte Header falsch handhaben: Kann zu Cache-Inkohärenz führen.
- Server-Fehlkonfiguration: Rückgabe von 200 OK, wenn 304 angebracht wäre, oder umgekehrt.
Testen bedingter Anfragen mit Apidog

Das Testen des Caching-Verhaltens kann knifflig sein. Sie müssen Anfragen mit spezifischen Headern senden und die Antwort des Servers interpretieren. Apidog ist das perfekte Werkzeug dafür.
Mit Apidog können Sie:
- Validatoren erfassen: Senden Sie eine erste Anfrage an eine Ressource und verwenden Sie die Benutzeroberfläche von Apidog, um die
ETag- undLast-Modified-Header aus der200-Antwort einfach anzuzeigen und zu kopieren. - Bedingte Anfragen erstellen: Erstellen Sie eine neue Anfrage an dieselbe URL und fügen Sie einfach die
If-None-Match- oderIf-Modified-Since-Header mit den von Ihnen erfassten Werten hinzu. - Die 304-Antwort überprüfen: Senden Sie die bedingte Anfrage und bestätigen Sie, dass der Server einen
304 Not Modified-Status ohne Body zurückgibt. - Cache-Invalidierung testen: Ändern Sie die Ressource auf dem Server (falls Sie Zugriff haben) und wiederholen Sie die bedingte Anfrage. Sie sollten nun einen
200 OKmit den neuen Daten sehen, was beweist, dass Ihre Caching-Logik funktioniert. - Tests automatisieren: Erstellen Sie Test-Suites in Apidog, die diesen Prozess automatisieren und sicherstellen, dass die Caching-Header Ihrer API immer korrekt konfiguriert sind.
Mit Apidog können Sie das Caching feinabstimmen, ohne auf reale Grenzfälle warten zu müssen. Laden Sie Apidog kostenlos herunter, um diese Funktionen zu nutzen.
Best Practices für Entwickler
Wenn Sie eine serverseitige Anwendung entwickeln, können Sie 304 nutzen:
- Immer Validatoren senden: Fügen Sie für cachefähige Ressourcen (Bilder, CSS, JS, statische API-Daten) immer einen
ETag- oderLast-Modified-Header in Ihre200-Antworten ein. - Bedingte Logik implementieren: Überprüfen Sie in Ihrem Servercode die
If-None-Match- undIf-Modified-Since-Header. Wenn sie mit der aktuellen Ressource übereinstimmen, antworten Sie mit304. Wenn nicht, antworten Sie mit200und den neuen Daten. Cache-Controlverwenden: DerCache-Control-Header (z. B.max-age=3600) teilt dem Browser mit, wie lange er eine Ressource als aktuell betrachten kann, ohne überhaupt eine bedingte Anfrage stellen zu müssen. Dies ist noch effizienter als ein304.
304 Not Modified und RESTful APIs
In REST-APIs erhöht 304 die Effizienz erheblich, indem es Clients ermöglicht, Ressourcendarstellungen zwischenzuspeichern. Eine ordnungsgemäße Cache-Behandlung reduziert die Serverlast und beschleunigt die Client-Synchronisierung.
In APIs, die häufig aktualisierte Ressourcen bereitstellen, sind bedingte Anfragen mit 304-Antworten für eine skalierbare Leistung unerlässlich.
304 Not Modified in Webbrowsern
Moderne Browser verlassen sich stark auf 304:
- Chrome, Firefox, Safari implementieren alle Caching basierend auf
ETagundLast-Modified. - Ein Aktualisieren (F5) kann immer noch 304-Prüfungen auslösen.
- Ein hartes Aktualisieren (Strg + Umschalt + R) umgeht den Cache und erzwingt eine 200.
304 vs. 200: Was ist der Unterschied?
Beide Codes bedeuten „Erfolg“, aber der Unterschied liegt in der Payload:
- 200 OK → Vollständige Ressource wird zurückgegeben.
- 304 Not Modified → Keine Ressource wird zurückgegeben – Cache verwenden.
Stellen Sie sich 304 so vor:
„Keine Sorge, es gibt nichts Neues. Verwenden Sie einfach weiterhin das, was Sie bereits haben.“
304 vs. 200 OK: Wann man was wählen sollte
- Senden Sie immer 200 OK mit vollständigem Inhalt bei ersten Anfragen oder wenn sich der Inhalt geändert hat.
- Senden Sie 304 Not Modified nur, wenn sich der Inhalt nicht geändert hat.
Eine ordnungsgemäße Cache-Kontrolle stellt sicher, dass Clients wissen, wann Updates angefordert und wann zwischengespeicherte Daten verwendet werden sollen.
Fazit: Das stille Arbeitstier des Webs
Der HTTP-Statuscode 304 Not Modified ist ein Meisterwerk effizienten Designs. Er ist ein stilles, im Hintergrund arbeitendes Arbeitstier, das das moderne Web skalierbar und schnell macht. Er demonstriert die Leistungsfähigkeit eines kooperativen Protokolls, bei dem Clients und Server zusammenarbeiten, um unnötige Arbeit zu vermeiden.
Der Statuscode 304 Not Modified mag keine Schlagzeilen wie 404 oder 500 machen, aber er ist entscheidend für Leistung, Caching und Effizienz. Er reduziert die Bandbreitennutzung, beschleunigt das Laden von Seiten und sorgt dafür, dass APIs reibungslos funktionieren.
Obwohl Benutzer ihn nie sehen werden, erleben sie seine Vorteile jeden Tag durch schneller ladende Seiten und reibungsloseres Surfen. Für Entwickler ist das Verständnis und die korrekte Implementierung der Unterstützung für 304-Antworten eine Schlüsselkompetenz bei der Optimierung jeder Webpräsenz.
Wenn also das nächste Mal eine Seite im Nu lädt, denken Sie an die winzige 304-Antwort, die dies ermöglicht hat. Wenn Sie Entwickler sind, bedeutet die Beherrschung von 304, schnellere, intelligentere Anwendungen zu entwickeln. Das Verständnis, wie 304-Antworten implementiert und getestet werden, erweitert Ihre Fähigkeit, effiziente, leistungsstarke Webanwendungen und APIs zu erstellen.
Und denken Sie daran: Das Testen von Caching- und Weiterleitungsverhalten ist einfacher denn je mit Apidog, einem kostenlosen, leistungsstarken Tool, das Ihnen hilft, HTTP-Statuscodes wie 304 Not Modified zu beherrschen. Vertrauen Sie nicht einfach Ihren Annahmen – simulieren und validieren Sie das Caching mit Apidog.
