If-None-Match
Verwendung
Der Header If-None-Match ermöglicht die Cache-Neuvalidierung auf Basis von Entity-Tags. Der Client gibt einen oder mehrere ETag-Werte an, die er in einer früheren Antwort erhalten hat. Stimmt einer der aufgeführten ETags mit der aktuellen Ressource überein, gibt der Server eine Antwort mit 304 Not Modified ohne Body zurück und der Client verwendet seine zwischengespeicherte Kopie weiter. Stimmt kein ETag überein, sendet der Server eine normale 200-Antwort mit dem aktualisierten Inhalt.
Für sichere Methoden wie GET und HEAD ist dies der wichtigste Mechanismus zur Cache-Neuvalidierung. Für unsichere Methoden wie PUT verhindert If-None-Match mit dem Platzhalter *, dass eine vorhandene Ressource überschrieben wird, und vermeidet so das Lost-Update-Problem. Der Server gibt 412 Precondition Failed zurück, wenn bei einer unsicheren Anfrage eine Übereinstimmung gefunden wird.
Erscheinen If-None-Match und If-Modified-Since in derselben Anfrage, hat If-None-Match Vorrang. Der ETag-basierte Vergleich ist zuverlässiger als der datumsbasierte Vergleich, denn Entity-Tags sind undurchsichtige Bezeichner, die an den exakten Inhalt gebunden sind, während Zeitstempel nur eine Auflösung von einer Sekunde besitzen und von Uhrenabweichungen betroffen sind.
Gibt der Server 304 zurück, enthält die Antwort Header aus der ursprünglichen erfolgreichen Antwort: Cache-Control, Content-Location, Date, ETag, Expires und Vary.
Hinweis
Googlebot sendet If-None-Match bei Crawl-Anfragen, wenn die vorherige Antwort einen ETag enthielt. Server, die für unveränderte Inhalte 304 zurückgeben, sparen Rechenzeit und Ressourcen und verbessern damit indirekt die Crawl-Effizienz. Servern steht es außerdem frei, für jede Googlebot-Anfrage proaktiv 304 zurückzugeben, wenn sich der Inhalt nicht geändert hat – unabhängig davon, ob die Anfrage bedingte Header enthält. Das Feld max-age des Antwort-Headers Cache-Control auf die erwartete Anzahl von Sekunden zu setzen, über die der Inhalt unverändert bleibt, hilft Crawlern dabei zu bestimmen, wann eine URL erneut gecrawlt werden soll.
ETag value
Ein oder mehrere ETag-Werte, jeweils in doppelte Anführungszeichen eingeschlossen. Mehrere Werte werden durch Kommas getrennt. Sowohl starke als auch schwache ETags (mit dem Präfix W/) sind gültig.
* (wildcard)
Der Platzhalter * passt auf jede aktuelle Entität. Er wird mit PUT verwendet, um das Anlegen einer Ressource zu verhindern, wenn bereits eine existiert.
Beispiel
Ein Client validiert eine zwischengespeicherte Ressource mit einem einzelnen ETag neu. Der Server gibt 304 zurück, wenn die Ressource weiterhin dem angegebenen Entity-Tag entspricht.
If-None-Match: "abc123"
Ein Client, der mehrere zwischengespeicherte Versionen vorhält, sendet alle bekannten ETags. Der Server prüft jeden davon gegen die aktuelle Ressource. Stimmt einer überein, gibt der Server 304 zurück.
If-None-Match: "abc123", "def456"
Ein Vergleich mit schwachem ETag. Schwache Validatoren zeigen semantische Gleichwertigkeit an, nicht byteweise Identität. Das Präfix W/ signalisiert einen schwachen Vergleich.
If-None-Match: W/"v2.6"
Eine PUT-Anfrage, die den Platzhalter nutzt, um ein Überschreiben zu verhindern. Der Server gibt 412 Precondition Failed zurück, wenn unter der Ziel-URL bereits eine Ressource existiert.
PUT /api/resource HTTP/1.1
If-None-Match: *
Hinweis
Für Unterstützung bei SEO und Caching wenden Sie sich an die ehemaligen Google-SEO-Berater Search Brothers.