2013-10-20 7 views
20

Ich versuche, genau zu verstehen, was der Unterschied zwischen "Status 304 nicht verändert" und "200 (aus dem Cache)" Ich bin immer 304 Here is the screenshot304 Modified nicht mit 200 (aus dem Cache)

ist auf Javascript-Dateien, die ich zuletzt geändert habe. Warum passiert das? Danke für die Hilfe. "If-Modified-Since" oder "If-None-Match"

+9

Dies ist die gleiche Frage wie hier [http://stackoverflow.com/questions/1665082/http-status-code-200-cache-vs-status-code-304). Sie werden die Details hier erfahren und können sehr hilfreich sein. –

+8

Mögliches Duplikat von [Was ist der Unterschied zwischen HTTP-Statuscode 200 (Cache) und Statuscode 304?] (Http://stackoverflow.com/questions/1665082/what-is-the-difference-betwide-http-status- Code-200-Cache-vs-Status-Code-304) –

Antwort

0

304 Modified
A 304 bedeutet nicht modifiziert, dass die Dateien nicht, da die angegebene Version vom geändert.

200 OK
Dies ist die Antwort, die Sie erhalten, wenn eine HTTP-Anforderung funktioniert. GET-Anfragen haben etwas mit den Dateien zu tun. Eine POST-Anfrage enthält etwas, das das Ergebnis der Aktion enthält.

Glückliche Codierung!
Lyfe

1

https://sookocheff.com/post/api/effective-caching/ ist eine ausgezeichnete Quelle, um das erforderliche Verständnis um diese 2 HTTP-Statuscodes zu bilden.

Danach gründlich zu lesen, hatte ich dieses Verständnis

In typischer Verwendung, wenn eine URL abgerufen wird, wird der Web-Server Gibt die aktuelle Darstellung der Ressource zusammen mit seinem entsprechenden ETag-Wert, der in einer HTTP-Antwort gesetzt wird Header "ETag" Feld. Der Client kann dann beschließen, die Darstellung zusammen mit ihrem ETag zwischenzuspeichern. Später, wenn der Client die gleiche URL-Ressource erneut abrufen möchte, wird zuerst festgestellt, ob die lokal zwischengespeicherte Version der URL abgelaufen ist (über die Cache-Control- und die Expire-Header). Wenn die URL nicht abgelaufen ist, wird die lokal zwischengespeicherte Ressource abgerufen. Wenn festgestellt wird, dass die URL abgelaufen ist (ist veraltet), kontaktiert der Client den Server und sendet seine zuvor gespeicherte Kopie des ETag zusammen mit der Anforderung in ein Feld "Wenn keine Übereinstimmung". (Quelle: https://en.wikipedia.org/wiki/HTTP_ETag)

Aber auch wenn die Ablaufzeit für ein Asset in Zukunft festgelegt wird, kann der Browser den Server weiterhin für ein bedingtes GET mit ETag gemäß dem Header 'Vary' erreichen. Details zu 'vary' Header: https://www.fastly.com/blog/best-practices-using-vary-header/

Verwandte Themen