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/
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. –
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) –