2016-05-03 6 views
0

Ich habe mit ein paar Webprojekten gearbeitet. Es handelt sich also offensichtlich um CSS-, JS- und Image-Dateien. Korrigieren Sie mich, wenn mein Verständnis von Caching, unten geschrieben, falsch ist. Je nachdem, wie diese Dateien zwischengespeichert werden, fragt der Browser den Server, ob eine der angeforderten Dateien seit dem letzten Abruf geändert wurde. Der Server soll die Datei senden, wenn sie geändert wurde, ansonsten einfach eine 304 Not Modified-Antwort senden.HTTP Not Modified 304, warum funktioniert der Server nicht wie erwartet?

Warum wir auch die Hacks wie das Ändern der Bilddateinamen oder das Hinzufügen von Versionen/Zeitstempel verwenden müssen -

< link rel = "stylesheet" href = "myfile.css v3.x"/>

< link rel = "stylesheet" href = "myfile.css? 1462282900307" />

Wie kann ich diese Hacks nicht nutzen und dafür sorgen, dass ich die Leute nicht fragen müssen, um treffen Ctrl + F5 wenn die Datei wurde geändert?

+0

Siehe meine Antwort hier: http://stackoverflow.com/questions/34664800/best-way-to-control-browser-caching-of-changing-js-and-css-files-in-apache/34672116# 34672116 –

Antwort

0

Es gibt viele verschiedene Caching-Anweisungen, die ein Server ausgeben kann.

Einer von ihnen ist "Diese Datei läuft am Datum X ab". Da der Client keine Zeit damit verbringt, den Server zu fragen, ob die Datei aktualisiert wurde, wird er nur darauf vertrauen, dass dies nicht der Fall ist. Dies speichert eine HEAD-Anforderung für jedes Mal, wenn der Client eine Anforderung für diese URL feststellt.

Wenn Sie möchten, dass der Client jedes Mal mit einer HEAD-Anfrage prüft: Verwenden Sie einen Header und verwenden Sie nicht Expires oder Cache-Control.

+0

Haben Sie Hinweise, wie Sie dies mit dem IIS-Server tun können? –