Was könnte der Unterschied zwischen If-Modified-Since und If-None-Match sein? Ich habe das Gefühl, dass If-None-Match für Dateien verwendet wird, während If-Modified-Since für Seiten verwendet wird.
88
In Bezug auf die Unterschiede zwischen Last-Modified/If-Modified-Since
undETag/If-None-Match
:
Beide können austauschbar verwendet werden. Abhängig von der Art der Ressource und der Art und Weise, wie sie auf dem Server generiert wird, ist die eine oder andere Frage ("Wurde dies seit ... geändert?" / "Stimmt dies immer noch mit diesem ETag überein?") Möglicherweise einfacher zu beantworten .
Beispiele:
mtime
als Last-Modified
Datum die einfachste Lösung.ETag
viel einfacher. Weitere Informationen zum Thema finden Sie unter diesen Links:
If-Modified-Since
wird mit dem verglichen,Last-Modified
währendIf-None-Match
mit verglichen wirdETag
. BeidesModified-Since
undETag
kann verwendet werden, um eine bestimmte Variante einer Ressource zu identifizieren.Der Vergleich von
If-Modified-Since
toLast-Modified
gibt Ihnen jedoch Auskunft darüber, ob die zwischengespeicherte Variante älter oder neuer ist, während der Vergleich vonIf-None-Match
toETag
nur Auskunft darüber gibt, ob beide identisch sind oder nicht. Darüber hinaus enthalten die meistenETag
Generatoren die Informationen des systemspezifischen Inodes, sodass das Verschieben einer Datei auf ein anderes Laufwerk dies ebenfalls ändern kannETag
.quelle
Der in Last-Modified / If-Modified-Since verwendete Zeitstempelwert hat eine begrenzte Genauigkeit - eine Sekunde. Dies reicht einfach nicht aus, um Inhalte schnell zu ändern, z. B. eine Web-Chat-Anwendung, bei der mehr als eine Nachricht pro Sekunde gesendet werden kann . ETag / If-None-Match kann helfen, dieses Problem zu lösen.
quelle
Wie in den Best Practices von Google angegeben:
https://developers.google.com/speed/docs/best-practices/caching
quelle
Last-Modified
mitETag
(oder auf der Useragent-SeiteIf-Modified-Since
mitIf-None-Match
) erwähnt. Ebenso schränkt Sie die W3-Spezifikation nicht ein. Es sagt nicht zu verwenden ,If-Modified-Since
mitIf-Match
, aber ich nehme an das ist , weil die Menge der Dokumente , die Daten aktualisiert haben aber den gleichen Inhalt wie von der ETag definiert sollte recht klein sein.If-Modified-Since verwendet ein Datum, während If-None-Match ein ETag verwendet . Sie können sowohl für "Seiten" (dh HTML) als auch für andere Dateien verwendet werden.
quelle
Sofern vom Server nicht als schwach angegeben, wird ein ETag als starker Validator angesehen und kann daher verwendet werden, um eine bedingte Entfernungsanforderung zu erfüllen. Die meisten automatisch generierten ETags weisen jedoch Schwierigkeiten in Serverfarmsituationen auf, da sie häufig Inode-Informationen und / oder einen eindeutigen dauerhaften Zähler verwenden. In der Praxis habe ich festgestellt, dass der Header "Last Modified" für ziemlich statische Inhalte ausreicht, z. B. für geschützte statische Inhalte, da die Schreibzeit der Datei einen recht guten Validator darstellt.
Der ETag ist bei weitem der flexibelste. Konforme Clients müssen das ETag in einer bedingten Anforderung senden, während sie beide senden sollten, falls verfügbar.
quelle
Der If-Modified-Since-Header wird verwendet, um den Zeitpunkt anzugeben, zu dem der Browser die angeforderte Ressource zuletzt empfangen hat. Der If-None-Match-Header wird verwendet, um das Entitäts-Tag anzugeben, das der Server beim letzten Empfang mit der angeforderten Ressource ausgegeben hat.
Auf die beiden beschriebenen Arten werden diese Header verwendet, um das Zwischenspeichern von Inhalten im Browser zu unterstützen, und sie ermöglichen es dem Server, den Browser anzuweisen, eine zwischengespeicherte Kopie einer Ressource zu verwenden, anstatt in diesem Fall mit dem vollständigen Inhalt der Ressource zu antworten nicht nötig.
quelle