2014-11-20 8 views
5

Ich weiß, dass diese Frage mehrmals gefragt wird. Aber mir ist das Konzept noch nicht klar. Nach der Lektüre viele Blogs und Antworten in so etwas ist, ich habe sagen, es ist alsoWas ist der Unterschied zwischen Etag und Expires-Header?

Expiry headers are used when you don’t even want client (and proxies/caches) to make a request to 
the server. In ETAG, the client will check with the server for the update, but in expiry 
headers, the client will know, when to expire the file and check for an update, till then it 
(browsers and proxies/caches) won’t bother server for checking the update. 

im Grunde, wenn wir max-age-Header verwenden abläuft /, Es wird für den Server für eine aktualisierte Datei nicht einmal überprüfen. Also dachte ich mir, es lokal zu testen.

Also habe ich auf einfache HTML-Datei einschließlich 2 JS-Dateien und 1 Bilddatei erstellt. In IIS habe ich den Expires-Header für den Image-Ordner auf 2 Tage festgelegt. Also nach meinem Verständnis, nachdem die Image-Datei einmal vom Server, für die nächste Anfrage, sollte es keine Anfrage an den Server senden, um zu überprüfen, ob die Image-Datei geändert wird oder nicht.

Aber was ich bekam, ist jedes Mal, wenn ich die Seite aktualisieren, sehe ich eine Anfrage an den Server gesendet und der Server gibt einen 304 not modified Status zurück. Aber nach den Spezifikationen/Blogs lese ich Es sollte keine Anfrage an den Server senden.

Jemand bitte erklären.

enter image description here

Antwort

3

Für das, was Sie beschrieben haben

  • Es ist klar, dass ETag Werke, wie es mit 304 not modified für den Antrag reagiert zu erwarten mit If-None-Match Feld und ETag Wert.

    so wird jetzt der Browser das Bild aus dem Cache laden, anstatt ein neues Bild von Server kostet Bandbreite und Zeit.

  • Es scheint, dass Caching in Ihrem Browser .Das ist deaktiviert, warum eine neue Anforderung vor dem Cache-Ablauf oder auch eine Anforderung an erster Stelle gesendet worden wäre, nicht gesendet.

    Hier ist ein wunderbarer article, die erklärt, wie das Caching zu finden, ist in Browser deaktiviert programmatisch

    Hier ist eine andere wunderbare article die Caching und Etag eingehend erklärt.

Hinweis:

Allgemeinen sprechen Wenn Sie mit mehrere Server mit Load Balancer dann einfach Etag Konfigurationen Ihre Website wahrscheinlich zu gehen Host kosten mehr Bandbreite, indem Etag in ihrem Header und es hat keinen Zweck, der überprüft, ob der Browser-Cache gültig ist. (Es wird immer sagen, ungültig)

0

Der wichtige Teil ist, was Sie gesagt haben: Ich aktualisiere die Seite. In diesem Fall versucht der Browser, Ihnen den neuen Inhalt zur Verfügung zu stellen, so dass er keine andere Möglichkeit hat, als den Server zu kontaktieren und alle Ressourcen zu überprüfen. (Es gibt eine Cache-Steuererweiterung immutable, die dieses Verhalten verhindert, aber nicht weit verbreitet und implementiert ist).

Wenn Sie das Verhalten Ihres Browsers sehen möchten, das Caches ohne Neuladen berücksichtigt, müssen Sie "Standard-Seiteneingabe" verwenden. Folgen Sie entweder einem Link zur Seite oder verwenden Sie einen anderen Tab und schreiben Sie die Seiten-URL in die URL-Leiste und drücken Sie die Eingabetaste.

Caches berücksichtigt die Ablaufzeit, wenn das Dokument nicht veraltet ist, wird es aus dem Cache zurückgegeben. Wenn er abgelaufen ist, wird ETag zur Validierung der Ressource verwendet (und nach der Validierung ist es möglich, dass die Ressource noch immer nicht modifiziert ist - Antwort 304)

Verwandte Themen