304 Not Modified: Bedeutung, Caching und SEO

Was HTTP 304 Not Modified bedeutet, warum der 3xx-Status kein Redirect ist, wie ETag und Last-Modified ihn auslösen und warum er die Crawling-Effizienz auf großen Websites indirekt verbessern kann, ohne Rankings zu beeinflussen.

Erstveröffentlicht: 3. Juli 2026 · Zuletzt aktualisiert: 8. Aug. 2026 · Fortgeschritten
Sprachen
1 Evidenzsignal auf dieser Seite

HTTP 304 Not Modified ist die Antwort auf eine bedingte GET- oder HEAD-Anfrage, deren Bedingung falsch ausgewertet wird und die andernfalls eine 200 ergeben hätte. Der Status gehört zur 3xx-Klasse, ist aber keine Weiterleitung: Er hat keinen Location-Header und laut Spezifikation überhaupt keinen Body. Eine Anfrage mit If-None-Match (abgeglichen mit einem ETag) oder If-Modified-Since (abgeglichen mit Last-Modified) wird dadurch bedingt; ein zweiter Besuch ist nur das typische Beispiel, nicht die Protokollregel. Wenn der Validator noch übereinstimmt, antwortet der Server mit 304 ohne Body und der Client verwendet seine Cache-Kopie weiter. Für SEO gibt es keinen direkten Ranking-Effekt — Google besitzt den Inhalt bereits, und 304 bestätigt nur, dass sich nichts geändert hat, auch wenn Search die Signale einer URL neu berechnen kann. Der echte Nutzen sind Ressourceneinsparungen: Auf großen Websites mit vielen selten geänderten URLs müssen Crawler unveränderte Seiten nicht erneut herunterladen, wodurch Bandbreite und Rechenleistung gespart werden. Google sagt, dass dies die Crawling-Effizienz indirekt verbessern kann, verspricht aber keine automatische Umverteilung des Crawl-Budgets auf andere URLs. Google empfiehlt ETag als primären Validator, unterstützt beide Validatoren und betrachtet eine Änderung nur dann als wichtig genug für eine Cache-Invalidierung, wenn sich der Inhalt tatsächlich ändert — nicht bei einem Copyright-Jahr im Footer. Verwechseln Sie 304 nicht mit 301/302/307/308 (sie verschieben zu einer anderen URL) oder mit 204 No Content (ebenfalls ohne Body, aber weil tatsächlich nichts zu senden ist).

TL;DR — 304 ist die Antwort auf eine bedingte GET-/HEAD-Anfrage, deren Bedingung falsch ausgewertet wird und die andernfalls eine 200-Antwort ergeben hätte (RFC 9110 §15.4.5). Sie gehört zur 3xx-Klasse, ist aber keine Weiterleitung: kein Location-Header, keine neue URL und — normativ — kein Body („sie kann keinen Inhalt und keine Trailer enthalten“). Die Bedingung wird durch If-None-Match (gegen einen ETag) und/oder If-Modified-Since (gegen Last-Modified) übertragen; wenn der Validator noch übereinstimmt, gibt der Server 304 zurück und der Client verwendet seinen Cache weiter. SEO-Auswirkung: kein direkter Ranking-Effekt — Google hat den Inhalt bereits, auch wenn Search die Signale einer URL weiterhin neu berechnen kann — und ein Ressourcenvorteil auf großen Websites (Google sagt, dass dies die Crawling-Effizienz indirekt verbessern kann; eine automatische Umverteilung des Crawl-Budgets auf andere URLs wird nicht versprochen). Googles Crawling-Infrastruktur unterstützt beide Validatoren und empfiehlt ETag als primären Validator (dort gibt es keine Probleme mit Datumsformaten). Nicht mit 301/302/307/308 (sie verschieben die URL) oder 204 (ebenfalls ohne Body, aber weil tatsächlich nichts zu senden ist) verwechseln.

Was 304 in der Spezifikation bedeutet

RFC 9110 (HTTP Semantics) §15.4.5 definiert es genau: “The 304 (Not Modified) status code indicates that a conditional GET or HEAD request has been received and would have resulted in a 200 (OK) response if it were not for the fact that the condition evaluated to false.” (Übersetzung) Der Statuscode 304 (Not Modified) zeigt an, dass eine bedingte GET- oder HEAD-Anfrage empfangen wurde und andernfalls eine 200-(OK-)Antwort ergeben hätte, weil die Bedingung falsch ausgewertet wurde. Das ist der tatsächliche normative Auslöser — eine bedingte GET-/HEAD-Anfrage, deren Bedingung falsch ausgewertet wird und die sonst eine 200 ergeben hätte. In einfachen Worten: Der Client fragt „Gib mir diese Seite, aber nur, wenn sie sich geändert hat“, der Server stellt fest, dass sie sich nicht geändert hat, und lässt den Body deshalb weg. Ein „zweiter Besuch“ ist das alltägliche Beispiel dafür, wie eine Anfrage bedingt wird (der Client fügt einen Validator aus einer früheren Antwort an), aber nur ein Lehrbeispiel, nicht die Regel — die Spezifikation verlangt keinen vorherigen Besuch, sondern nur eine bedingte Anfrage. Evidence for this claim RFC 9110 defines 304 Not Modified as the response to a conditional GET or HEAD when the selected representation has not changed and says the response cannot contain content. Scope: HTTP semantics for 304 conditional responses. Confidence: high · Verified: IETF: RFC 9110 §15.4.5 — 304 Not Modified Evidence for this claim A 304 response terminates after the header section and cannot contain content or trailers. Scope: conditional GET and HEAD Confidence: high · Verified: RFC 9110 §15.4.5: 304 Not Modified

Die Spezifikation verwendet in diesem Abschnitt sogar das Wort “redirecting” (Übersetzung) „Weiterleiten“ — “the server is therefore redirecting the client to make use of that stored representation as if it were the content of a 200 (OK) response” (Übersetzung) Der Server leitet den Client daher zu dieser gespeicherten Darstellung, damit er sie wie den Inhalt einer 200-(OK-)Antwort verwenden kann. Lesen Sie den Satz genau: Der Client wird zu seinem eigenen Cache zurückgeleitet, nicht zu einer anderen URL. Es gibt keinen Location-Header und keine neue Adresse. Dieser eine Satz ist die Ursache für den Großteil der Verwirrung darüber, ob 304 „eine Weiterleitung“ ist. Im HTTP-Sinn ist sie das nicht.

Zwei weitere normative Punkte sind wichtig:

  • Nie ein Body. RFC 9110 sagt: “A 304 response is terminated by the end of the header section; it cannot contain content or trailers.” (Übersetzung) Eine 304-Antwort endet mit dem Ende des Header-Abschnitts; sie darf keinen Inhalt oder Trailer enthalten. Eine 304 mit Body verletzt die Spezifikation, und manche Clients behandeln sie dann fehlerhaft. Das ist eine harte Regel, keine Stilfrage.
  • Dieselben Metadaten wie bei 200. Der Server folgt der Vorgabe “MUST generate any of the following header fields that would have been sent in a 200 (OK) response to the same request: Content-Location, Date, ETag, and Vary,” (Übersetzung) Der Server muss daher die entsprechenden Headerfelder einer 200-(OK-)Antwort für dieselbe Anfrage erzeugen: Content-Location, Date, ETag und Vary; je nach Fall kommen Cache-Control und Expires hinzu. Eine 304 ist damit die Header-Information einer 200 ohne deren Payload.

Wie 304 tatsächlich funktioniert: bedingte Anfragen

Ein Server sendet eine 304 nie aus dem Nichts. Sie ist immer die Antwort auf eine bedingte Anfrage — eine Anfrage, die der Client durch einen aus einer früheren Antwort gespeicherten Validator bedingt macht. Es gibt zwei Validatoren.

ETag und If-None-Match

Ein ETag (Entity-Tag) ist ein undurchsichtiges Token, das der Server an eine 200-Antwort anhängt — stellen Sie es sich als Versions-Fingerabdruck für genau diese Darstellung der URL vor. Bei der nächsten Anfrage an diese URL sendet der Client den gespeicherten Wert in einem If-None-Match-Header zurück. Der Server vergleicht: Wenn der aktuelle ETag weiterhin übereinstimmt, hat sich nichts geändert und er gibt 304 zurück; wenn er abweicht, gibt er eine frische 200-Antwort mit dem neuen Inhalt und einem neuen ETag zurück.

Last-Modified und If-Modified-Since

Die datumsbasierte Alternative: Der Server sendet bei der 200 einen Last-Modified-Zeitstempel. Beim nächsten Mal sendet der Client ihn in einem If-Modified-Since-Header zurück, und der Server vergleicht die Daten — wenn sich die Ressource seit diesem Zeitstempel nicht geändert hat, ist die Antwort eine 304. Das ist einfacher, aber gröber (nur so genau wie der Zeitstempel) und empfindlich gegenüber dem exakten HTTP-Datumsformat, was häufig Fehler verursacht. Wenn beide Validatoren vorhanden sind, hat If-None-Match (der ETag) Vorrang vor If-Modified-Since.

Starke und schwache ETags

Ein ETag kann stark oder schwach sein, und der Unterschied ist wichtig. Laut MDNs Anleitung zu bedingten Anfragen bedeutet “strong validation consists of guaranteeing that the resource is, byte to byte, identical to the one it is compared to.” (Übersetzung) Eine starke Validierung garantiert, dass die Ressource Byte für Byte identisch mit der Vergleichsressource ist. Ein schwacher ETag beginnt mit W/ (zum Beispiel ETag: W/"abc123") und behauptet nur semantische Gleichwertigkeit — MDNs Beispiel beschreibt: “a page that would differ from another only by a different date in its footer, or different advertising, would be considered identical to the other with weak validation.” (Übersetzung) Eine Seite, die sich von einer anderen nur durch ein anderes Footer-Datum oder andere Werbung unterscheidet, gilt bei schwacher Validierung als identisch. Starke ETags (ohne Präfix) sind für Dinge wie Range-Anfragen nötig, die einen bytegenauen Abgleich benötigen; schwache ETags sind nützlich, wenn Komprimierung, Leerraum oder geringfügige nicht inhaltliche Unterschiede keinen vollständigen Abruf auslösen sollen. Die praktische Falle: Wenn sich Ihr ETag bei jeder Gzip-/Brotli-Neukomprimierung ändert oder zwischen Servern eines Load-Balancers variiert, lösen Sie unnötige neue Crawls aus — wählen Sie starke oder schwache ETags bewusst und halten Sie den Wert für tatsächlich unveränderten Inhalt stabil.

Der vollständige Handshake, Schritt für Schritt

  1. Erste Anfrage → Der Server gibt 200 OK mit dem Inhalt sowie ETag und/oder Last-Modified zurück.
  2. Der Client speichert den Inhalt und diese Validatoren.
  3. Nächste Anfrage → Der Client sendet If-None-Match und/oder If-Modified-Since mit den gespeicherten Werten.
  4. Der Server entscheidet: unverändert → 304 Not Modified, kein Body, der Client verwendet seinen Cache; geändert → 200 OK mit dem neuen Body und frischen Validatoren. Evidence for this claim RFC 9111 defines validation as checking whether a stored response remains current, typically with a conditional request that can receive 304 Not Modified. Scope: HTTP cache validation; it does not create a Search ranking benefit. Confidence: high · Verified: IETF: RFC 9111 §4.3 — Validation

Wenn Sie die ausführlichere Behandlung von Caching und Validatoren als Hebel für Crawling-Effizienz möchten — die gesamte Geschichte der bedingten Anfragen und ihr Zusammenhang mit dem Crawl-Budget — ist das ein Begleitthema; dieser Artikel konzentriert sich auf den Statuscode.

304 und SEO: kein Ranking-Effekt, aber ein echter Effekt auf die Crawling-Effizienz

Hier ist die gesamte SEO-Geschichte, und sie ist enger, als viele Blogtexte nahelegen. 304 hat keinen direkten Ranking-Effekt, und Googles eigene Hinweise dazu, wie Statuscodes Crawling und Indexierung beeinflussen, begrenzen auch den Indexierungseffekt: Search kann die Signale einer URL weiterhin neu berechnen, ansonsten ändert eine 304 aber nicht, wie die Seite indexiert wird. Google besitzt den Inhalt bereits vom vorherigen Crawl; eine 304 bestätigt nur, dass sich nichts geändert hat, und Google verwendet ihn weiter. Für die Rückgabe von 304s gibt es keinen Rankingbonus.

Was Ihnen 304 ermöglicht, sind Ressourceneinsparungen mit möglicher indirekter Verbesserung der Crawling-Effizienz. In Googles Blogbeitrag „Crawling December: HTTP caching“ vom Dezember 2024 formulierte Gary Illyes es klar: “Especially if you have a large site with rarely-changing content under individual URLs, allowing caching locally may help your site be crawled more efficiently. Google’s crawling infrastructure supports heuristic HTTP caching as defined by the HTTP caching standard, specifically through the ETag response- and If-None-Match request header, and the Last-Modified response- and If-Modified-Since request header.” (Übersetzung) Besonders bei großen Websites mit selten geänderten Inhalten kann lokales Caching dazu beitragen, dass die Website effizienter gecrawlt wird; Googles Infrastruktur unterstützt dafür heuristisches HTTP-Caching mit ETag/If-None-Match und Last-Modified/If-Modified-Since.

Zum genauen 304-Mechanismus erklärt derselbe Beitrag ausdrücklich, warum der leere Body der entscheidende Punkt ist: Wenn der vom Crawler gesendete ETag “matches the current value the server generated, your server should return an HTTP 304 (Not modified) status code with no HTTP body,” (Übersetzung) sollte der Server bei übereinstimmendem Wert den Statuscode 304 ohne HTTP-Body zurückgeben. Der Teil “no HTTP body” (Übersetzung) „kein HTTP-Body“ ist wichtig, weil “your server doesn’t have to spend compute resources on actually generating content” (Übersetzung) der Server keine Rechenressourcen für die tatsächliche Erzeugung des Inhalts aufwenden muss und “doesn’t have to transfer the HTTP body” (Übersetzung) den HTTP-Body nicht übertragen muss — Sie sparen auf beiden Seiten Rechenleistung und Bandbreite. Googles eigene Formulierung für den nachgelagerten Nutzen ist vorsichtig: Diese Ressourceneinsparungen können die Crawling-Effizienz indirekt verbessern. Es ist kein Versprechen, dass die eingesparte Arbeit automatisch auf Ihre neuen oder aktualisierten URLs umverteilt wird — betrachten Sie es als Ressourceneinsparungsmechanismus mit einem plausiblen, aber nicht garantierten Nebeneffekt.

Warum das auf großen Websites wichtiger ist

Wenn Sie einige hundert Seiten haben, ist das weitgehend akademisch — Google wird Ihre gesamte Website unabhängig davon bequem crawlen. Der Nutzen wächst mit der Größe: Eine Website mit Hunderttausenden oder Millionen URLs, von denen sich viele selten ändern, profitiert spürbar, wenn Crawler die unveränderten Seiten nicht erneut abrufen müssen. An dieses Publikum richtet sich Googles Beitrag, und das ist die ehrliche Einordnung — verkaufen Sie 304 nicht als Maßnahme für kleine Websites.

ETag oder Last-Modified — und was als „geändert“ zählt

Google empfiehlt ETag als primären Validator: “We strongly recommend using ETag because it’s less prone to errors and mistakes (the value is not structured unlike the Last-Modified value).” (Übersetzung) Wir empfehlen ETag dringend, weil er weniger fehleranfällig ist und sein Wert im Gegensatz zu Last-Modified nicht strukturiert ist. Beide zu setzen ist in Ordnung und wird empfohlen. Wenn Sie Last-Modified verwenden, “must be formatted according to the HTTP standard” (Übersetzung) muss das Datum nach dem HTTP-Standard formatiert sein — Google empfiehlt das Format “Weekday, DD Mon YYYY HH:MM:SS Timezone,” (Übersetzung) „Wochentag, Tag Monat Jahr Stunde:Minute:Sekunde Zeitzone“, zum Beispiel “Fri, 4 Sep 1998 19:15:56 GMT” (Übersetzung) eine gültige HTTP-Datumsangabe; andernfalls wird es möglicherweise stillschweigend ignoriert. Google empfiehlt außerdem, das max-age-Feld von Cache-Control und bei Bedarf Expires zu setzen, damit Crawler entscheiden können, wann sie erneut crawlen. Evidence for this claim Google's crawler guidance recommends ETag because its opaque value avoids date-formatting errors, while also allowing both ETag and Last-Modified; this is Google-specific operational advice, not a change to HTTP validator semantics. Scope: HTTP cache validation Confidence: high · Verified: Crawling December: HTTP caching

Was als Änderung gilt, die den Cache ungültig machen sollte, entscheiden Sie selbst. Googles Rat lautet, dies für wesentliche Änderungen aufzuheben: “Our recommendation is that you require a cache refresh on significant changes to your content; if you only updated the copyright date at the bottom of your page, that’s probably not significant.” (Übersetzung) Fordern Sie eine Cache-Aktualisierung nur bei signifikanten Inhaltsänderungen an; ein ausschließlich aktualisiertes Copyright-Datum im Seitenfuß ist wahrscheinlich nicht signifikant.

Was Googlebot und Bingbot tatsächlich damit tun

Nicht jede Crawler-Anfrage ist bedingt. Googles Crawler-Dokumentation weist darauf hin, dass einzelne Google-Crawler und Fetcher je nach bedientem Produkt unterschiedliche Caching-Unterstützung haben — Googlebot unterstützt Caching beim erneuten Crawlen von URLs für Search, während einige andere Google-Fetcher es nur unter bestimmten Bedingungen unterstützen. Erwarten Sie daher auch bei korrekt eingerichteten Headern nicht, dass 100 % der Anfragen If-None-Match/If-Modified-Since enthalten. Bei Bing gilt: Bedingte Anfragen sind keine Google-exklusive Funktion. Bings Crawler unterstützt bedingte GET-Anfragen (sendet If-Modified-Since und, wenn verfügbar, If-None-Match und akzeptiert bei unverändertem Inhalt eine 304) mindestens seit einem Live-Search-Blogbeitrag von 2008 — Bing hat jedoch keine moderne Entsprechung zu Googles Beitrag von 2024 veröffentlicht. Betrachten Sie die Mechanik als allgemeines HTTP-Verhalten, das für beide Suchmaschinen gilt.

304-Unterstützung implementieren

  1. Validatoren bei der 200 senden. Konfigurieren Sie Server, CDN oder Anwendung so, dass normale 200-Antworten einen ETag (empfohlen) und/oder einen korrekt formatierten Last-Modified-Header erhalten. Viele Server und Frameworks erzeugen ETags für statische Dateien automatisch; dynamische Antworten benötigen meist eine ausdrückliche Aktivierung.
  2. Bedingte Header bei der nächsten Anfrage berücksichtigen. Wenn eine Anfrage mit If-None-Match/If-Modified-Since eintrifft, vergleichen Sie mit dem aktuellen Validator und geben Sie 304 (ohne Body) zurück, wenn er weiterhin übereinstimmt, oder eine frische 200, wenn nicht. Auch hier erledigen Server für statische Dateien das oft automatisch; App-Routen und Edge-Worker tun es häufig nicht, sofern Sie es nicht einrichten.
  3. Definieren Sie, was „geändert“ bedeutet, und halten Sie den ETag für tatsächlich unveränderten Inhalt stabil — lassen Sie ihn nicht durch erneute Komprimierung oder Unterschiede zwischen Servern unnötig wechseln.
  4. Achten Sie auf die klassischen Fehlkonfigurationen:
    • Immer 200 — es werden nie Validatoren ausgegeben, daher ist keine Anfrage bedingt und der Effizienzvorteil bleibt aus.
    • Instabile ETags — ein Wert ändert sich, obwohl der Inhalt gleich bleibt (Load-Balancer oder erneute Komprimierung), und erzwingt ständige neue Abrufe.
    • Veraltete 304s — die gefährliche Variante: Ein Server gibt nach einer echten Inhaltsänderung weiterhin 304 (oder denselben ETag) zurück, sodass Crawler und Caches die Aktualisierung nie erhalten. Das ist ein Fehler, den Sie in der Log-Analyse finden müssen, keine inhärente Schwäche von 304.

304 im Vergleich zu anderen Statuscodes

304 im Vergleich zu 301 / 302 / 307 / 308

Das sind die tatsächlichen Weiterleitungen. Eine dauerhafte 301/308 oder eine vorübergehende 302/307 trägt einen Location-Header und verschiebt den Client zu einer anderen URL301/308 übertragen außerdem ein Kanonisierungssignal. Eine 304 hat keinen Location-Header, verschiebt niemanden und überträgt kein Rankingsignal. Gleiche 3xx-Familie nach der Nummer, völlig andere Aufgabe. Die Details zu den einzelnen Weiterleitungscodes stehen in den jeweiligen Artikeln (siehe den Beitrag 301 redirect und den Weiterleitungs-Sub-Hub).

304 im Vergleich zu 204 No Content

Beide sind aus völlig unterschiedlichen Gründen ohne Body. Eine 204 No Content ist ein erfolgreicher 2xx-Status mit absichtlich leerem Body, weil der Server wirklich nichts zu senden hat — etwa nach einem erfolgreichen API-DELETE/PUT oder bei einem Analytics-Beacon. Eine 304 sendet ebenfalls keinen Body, aber nicht, weil nichts zu senden wäre, sondern weil „Sie die Ressource bereits haben und sie noch gültig ist“. Verwechseln Sie die beiden nicht: Eine 204 auf einer Seiten-URL kann wie ein Soft-404 behandelt werden, weil kein indexierbarer Inhalt vorhanden ist, während eine 304 eine Gültigkeitsbestätigung für Inhalt ist, den Google bereits besitzt. Der Artikel 204 No Content behandelt diesen Code vollständig.

Häufige Mythen über 304

  1. „304 ist eine Weiterleitung.“ Kein Location-Header, niemand geht irgendwohin. Der Client verwendet seine eigene Cache-Kopie weiter. Das „Weiterleiten des Clients, damit er die gespeicherte Darstellung nutzt“ in RFC 9110 bedeutet, auf den Cache zurückzuverweisen, nicht auf eine andere URL.
  2. „304 ist ein Fehler, den ich beheben muss.“ Es ist das korrekte, beabsichtigte Ergebnis einer funktionierenden Einrichtung für bedingte Anfragen. 304s in einem Crawl oder in DevTools zu sehen, ist ein Zeichen dafür, dass Caching funktioniert — das häufigste Missverständnis in den SERPs.
  3. „304 hilft Rankings.“ Es gibt keinen direkten Ranking-Effekt, und Google begrenzt auch den Indexierungseffekt — Search kann die Signale einer URL neu berechnen, aber eine 304 ändert ansonsten nichts an der Indexierung. Der Nutzen sind Ressourceneinsparungen, die laut Google die Crawling-Effizienz auf sehr großen Websites indirekt verbessern können; 304 ist aber kein Rankingsignal und keine Garantie, dass eingesparte Arbeit auf andere URLs übergeht.
  4. “If my server returns 304, Google will use stale content forever.” (Übersetzung) Wenn mein Server 304 zurückgibt, wird Google den veralteten Inhalt für immer verwenden. 304 wird nur zurückgegeben, solange der Validator übereinstimmt. Sobald sich der Inhalt tatsächlich ändert, gibt ein korrekt implementierter Server eine frische 200 mit neuen Validatoren zurück. Das echte Risiko ist ein falsch konfigurierter Server, der nach einer Inhaltsänderung weiter 304 liefert — ein Fehler, keine Eigenschaft von 304. Evidence for this claim RFC 9111 defines validation as checking whether a stored response remains current, typically with a conditional request that can receive 304 Not Modified. Scope: HTTP cache validation; it does not create a Search ranking benefit. Confidence: high · Verified: IETF: RFC 9111 §4.3 — Validation
  5. ETag und Last-Modified sind austauschbar.“ Beide sind Validatoren, aber Last-Modified ist empfindlich gegenüber dem Datumsformat und nur so genau wie sein Zeitstempel, während ETag undurchsichtig und präzise ist (bei schlechter Implementierung aber zwischen Servern oder nach erneuter Komprimierung unpraktisch variieren kann). Google empfiehlt ETag als primären Validator, beide sind möglich.

FAQs

Ist HTTP 304 ein Fehler? Nein — es ist ein Erfolgssignal dafür, dass Caching funktioniert. Die Cache-Kopie des Clients ist noch gültig.

Ist 304 Not Modified eine Weiterleitung? Nein. Der Status gehört wegen seiner Nummerierung zur 3xx-Klasse, hat aber keinen Location-Header und verschiebt den Client nicht zu einer neuen URL.

Hilft 304 SEO oder Rankings? Kein direkter Ranking-Effekt und kein Indexierungseffekt, abgesehen davon, dass Google die Signale einer URL möglicherweise neu berechnet. Der Status spart Bandbreite und Rechenleistung, weil Crawler unveränderte Seiten nicht erneut abrufen müssen; laut Google kann das die Crawling-Effizienz auf großen Websites indirekt verbessern.

Was ist der Unterschied zwischen ETag und Last-Modified? ETag ist ein undurchsichtiger Versions-Fingerabdruck, der über If-None-Match abgeglichen wird; Last-Modified ist ein Zeitstempel, der über If-Modified-Since abgeglichen wird. Google empfiehlt ETag, weil er weniger fehleranfällig ist.

Was ist ein schwacher bzw. starker ETag? Ein starker ETag behauptet byteidentischen Inhalt; ein schwacher ETag (mit dem Präfix W/) behauptet semantische Gleichwertigkeit und toleriert geringfügige Unterschiede wie Komprimierung oder ein geändertes Footer-Datum.

Warum sehe ich 304s in meinen Logs oder Crawl-Berichten? Weil Clients bedingte Anfragen stellen und Ihr Server korrekt bestätigt, dass sich der Inhalt nicht geändert hat. Das ist erwartbar und gut.

Wie bringe ich meinen Server dazu, 304 korrekt zurückzugeben? Senden Sie bei der 200 ETag/Last-Modified und berücksichtigen Sie bei der nächsten Anfrage If-None-Match/If-Modified-Since, indem Sie bei weiterhin übereinstimmendem Validator eine 304 ohne Body zurückgeben.

Was ist der Unterschied zwischen 304 und 204? Beide sind ohne Body; 204, weil nichts zu senden ist, 304, weil Sie bereits eine weiterhin gültige Kopie besitzen.

Sendet Googlebot bei jeder Anfrage bedingte Header? Nein — die Caching-Unterstützung variiert je nach Crawler, daher ist nicht jede Anfrage bedingt, auch wenn die Header konfiguriert sind.

Darf eine 304-Antwort einen Body enthalten? Nein. Laut RFC 9110 „kann sie keinen Inhalt und keine Trailer enthalten“. Eine 304 mit Body verletzt die Spezifikation. Evidence for this claim A 304 response terminates after the header section and cannot contain content or trailers. Scope: conditional GET and HEAD Confidence: high · Verified: RFC 9110 §15.4.5: 304 Not Modified

Try it live

This is a real endpoint on this site — not a simulation. Hit it from the button, open it in a new tab, or curl -i it from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.