Ich habe ein paar Fragen zu Cache-Control.
Wenn ich Cache-Control max-age=3600, must-revalidate
für eine statische HTML / js / images / css-Datei mit dem zuletzt geänderten Header im HTTP-Header spezifiziere :
- Geht der Browser- / Proxy-Cache (wie Squid / Akamai) bis zum Ursprungsserver, um vor Ablauf des Höchstalters zu validieren ? Oder werden Inhalte aus dem Cache bereitgestellt, bis das maximale Alter abgelaufen ist?
- Gibt es nach Ablauf des Höchstalters (dh Ablauf aus dem Cache) eine If-Modified-Since-Prüfung oder wird der Inhalt ohne If-Modified-Since-Prüfung erneut vom Ursprungsserver heruntergeladen?
ein. Schauen Sie sich die Registerkarte "Statistiken" auf dieser Seite an und sehen Sie, was passiert.
b. Nach Ablauf prüft der Browser auf dem Server, ob die Datei aktualisiert wurde. Wenn nicht, antwortet der Server mit einem
304 Not Modified
Header und es wird nichts heruntergeladen.Sie können dieses Verhalten selbst überprüfen, indem Sie das Fenster "Net" in Firebug oder ähnlichen Tools aufrufen. Geben Sie einfach die URL erneut in die Adressleiste ein und vergleichen Sie die Anzahl der HTTP-Anforderungen mit der Anzahl der Anforderungen, wenn Ihr Cache leer ist.
quelle
Die gegebenen Antworten sind falsch, zumindest für Webbrowser im Jahr 2019.
"Nach Ablauf prüft der Browser auf dem Server, ob die Datei aktualisiert wurde" <- nicht wahr
Ich habe eine statische Datei mit "Cache-Control: public, must-revalidate, max-age = 864000" und sowohl Chrome als auch Firefox stellen jedes Mal eine Anfrage (und erhalten jedes Mal eine 304 Not Modified zurück).
quelle