ETags sind eine Alternative zu "Last-Modified-Time" (können aber in Kombination mit dieser verwendet werden), um die Cache-Validierung zu bestimmen.
Der Client kann eine Vorbedingung senden, z. B. Wenn-Übereinstimmungen oder Wenn-Keine-Übereinstimmungen basierend auf dem ETag. Dies gilt nicht nur für GET-Anforderungen (wie dies bei webpagetest.org der Fall ist). Sie können die "opportunistische Aktualisierung" verwenden, sodass eine PUT-Anforderung eine Vorbedingung hat und den Aktualisierungsvorgang nicht ausführt, wenn die Ressource seit dem ETag aktualisiert wurde zuletzt erworben.
Einfach ausgedrückt: Sie klicken auf einer Seite in Ihrem CMS auf Bearbeiten, Ihr Freund auf einer Seite in Ihrem CMS auf Bearbeiten, Ihr Freund führt die Bearbeitung durch und klickt auf Speichern, und schließlich klicken Sie auf Speichern - ohne einen ETag- oder Content-MD5-HTTP-Header, den Sie benötigen würden Um das Rad neu zu erfinden und Probleme zu vermeiden (z. B. wenn Sie die Änderungen Ihrer Freunde löschen), ist die Lösung bereits Teil des HTTP-Protokolls und daher sinnvoll, es nur zu verwenden.
Im Allgemeinen stimme ich AOL (die webpagetest.org ausführen) in Bezug auf ihre "Einheitsgröße" -Ratschläge zu - es ist besser, HTTP-Header nicht mit kryptischen Zeichenfolgen zu verstopfen (ETags sind im Allgemeinen nicht hübsch oder von Menschen lesbar), wenn ein zweiter Unterschied besteht ( welche Last-Modified-Time erkennen kann) wird für den vorliegenden Job tun.
Wenn eine Seite mehrmals pro Sekunde aktualisiert wird und unbedingt die aktuellste Version angezeigt werden muss, können Sie mit anderen Lösungen als HTTP-GETs experimentieren oder einfach ETags verwenden.
Achten Sie darauf, dass Ihre ETags keine Informationen pro Dateisystem, pro Serverkonfigurationsänderung usw. enthalten (z. B. Inodes, die bei Apache standardmäßig verwendet werden). Andernfalls treten Probleme auf, wenn zwei Server vorhanden sind (die ETags von jedem Server stimmen nicht überein).