Ein ETag (Entity Tag) ist ein Validator-Header, mit dem ein Webserver die aktuelle Version einer Ressource kennzeichnet. Browser und Proxys senden ihn bei späteren Anfragen zurück, damit der Server ohne erneuten Transfer des Inhalts entscheiden kann, ob sich etwas geändert hat.
Starke und schwache ETags
Es gibt zwei Formen: Ein starker ETag (z.B. "33a64df5") garantiert byte-für-byte-Identität der Repräsentation, ein schwacher ETag (W/"33a64df5") nur semantische Gleichwertigkeit. Schwache Tags reichen für Cache-Revalidierung, nicht für Range-Requests.
Wie die Revalidierung funktioniert
Der Client sendet den gespeicherten Wert im Header If-None-Match. Stimmt er mit dem aktuellen ETag überein, antwortet der Server mit 304 Not Modified ohne Body — der Browser nutzt seine Kopie weiter. Die Prüfung basiert auf RFC 9110, der Nachfolger von RFC 7232.
ETags sind genauer als Zeitstempel, weil sie sich bei jeder Inhaltsänderung ändern, auch innerhalb derselben Sekunde. Viele Server bilden sie als Hash des Inhalts oder aus Datei-Metadaten. Häufig wird der ETag mit dem Last-Modified-Header kombiniert, den der Server als Fallback für Clients ohne ETag-Unterstützung auswertet.
Verwandte Grundlagen: HTTP, Cache, Cache-Control.