Frage

Was könnte der Unterschied zwischen if-modified-since und wenn-nichts-Spiel sein? Ich habe das Gefühl, dass, wenn-nichts-Spiel für Dateien verwendet wird, während, wenn-Modified-Since für Seiten verwendet wird?

War es hilfreich?

Lösung

In Bezug auf die Unterschiede zwischen Last-Modified/If-Modified-Since und ETag/If-None-Match:

Beide können austauschbar verwendet werden. Jedoch abhängig von der Art der Ressource, und wie es auf dem Server erzeugt wird, die ein oder andere Frage ( „hat mich diese seit geändert worden ...?“ / „Bedeutet dies immer noch diesen ETAG überein?“) Kann einfacher sein, zu beantworten .

Beispiele:

  • Wenn Sie Dateien sind dient, mit der mtime der Datei als die Last-Modified Datum die einfachste Lösung ist.
  • Wenn Sie eine dynamische Web-Seite von einer Reihe von SQL-Abfragen sind gebaut dient, zu prüfen, ob die von einem der genannten Abfragen zurückgegebenen Daten hat (es sei denn, alle von ihnen haben eine Art von „zuletzt geändert“ Spalte) geändert unpraktisch sein kann . In diesem Fall wird unter Verwendung von z.B. ein MD5-Hash des Inhalts der Seite als ETag wird viel einfacher sein.
    OTOH, bedeutet dies, dass Sie immer noch die ganze Seite auf dem Server generieren müssen, auch für eine bedingte GET. Herauszufinden, was genau in den ETag (Primärschlüssel, Revisionsnummern, ... etc.) gehen hat, können Sie viel Zeit hier speichern.

Sehen Sie diese Links, um weitere Informationen zum Thema:

Andere Tipps

If-Modified-Since ist im Vergleich zu den Last-Modified während If-None-Match ist im Vergleich zu ETag . Sowohl Modified-Since und ETag können verwendet werden, um eine spezielle Variante einer Ressource zu identifizieren.

Aber der Vergleich von If-Modified-Since zu Last-Modified gibt Ihnen die Informationen, ob die im Cache gespeicherten Variante ist älter oder neuere , während der Vergleich von If-None-Match ETag nur gibt Ihnen die Informationen, ob beide ist identisch oder nicht. Außerdem haben die meisten der ETag Generatoren umfassen die Informationen des systemspezifischen inode so eine Datei ein bewegtes anderes Laufwerk kann auch die ETag ändern.

Timestamp-Wert verwendet in Last-Modified / If-Modified-Since begrenzte Genauigkeit hat - einer Sekunde und das ist einfach nicht genug für den schnellen wechselnden Inhalten wie zum Beispiel Web-Chat-Anwendung, in denen mehr als eine Nachricht gebucht werden konnten an jede Sekunde gegeben. ETag / If-None-Match kann helfen, dieses Problem zu lösen.

Wie es in Google Best Practices angegeben:

  

Es ist wichtig, eine spezifizieren von Verfällt oder Cache-Control max-age, und einer von Last-Modified oder ETag, für alle zwischenspeicherbar Ressourcen. Es ist überflüssig zu spezifizieren beide Verfallen und Cache-Control: max. Alter, oder angeben, sowohl Last-Modified und ETag

https://developers.google.com/speed/docs/best-practices/caching

If-Modified-Since ein Datum verwendet , während If-None-Match eine ETag . Sie können sowohl für „Seiten“ verwendet werden (das heißt HTML) und andere Dateien.

Es sei denn, so schwach vom Server festgestellt, wird ein ETag ein starker Prüfer betrachtet, und somit verwendet werden, kann eine bedingte reichte Anfrage satify. Allerdings ist die meist automatisch ETags zeigen Schwierigkeiten in der Serverfarm Situationen erzeugt, da sie oft Inode Informationen und / oder einen eindeutigen persistenten Zähler verwenden. In der Praxis habe ich die Last Modified-Header gefunden für ziemlich statische Inhalte ausreichend zu sein, z.B. geschützte statische Inhalte serviert, da die Schreibzeit der Datei einen einigermaßen guten Validator macht.

Der ETag ist bei weitem die flexibelste. Konforme Kunden sind verpflichtet, den ETag in einer bedingten Anfrage zu senden, während sie beide, wenn verfügbar senden sollen.

Die If-Modified-Since-Header verwendet werden, um die Zeit festzulegen, in dem der Browser zuletzt die angeforderte Ressource erhalten. Der If-None-Match-Header verwendet wird, um den Entity-Tag angeben, die der Server mit der angeforderten Ressource ausgegeben, wenn es zuletzt empfangen wurde.

In den beiden Möglichkeiten beschrieben, werden diese Header verwendet Caching von Inhalten innerhalb des Browsers zu unterstützen, und sie ermöglichen es den Server den Browser anweisen, eine Cache-Kopie einer Ressource zu verwenden, anstatt mit dem vollständigen Inhalt der Ressource reagiert wenn dies nicht erforderlich ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top