Ich habe festgestellt, dass einige Browser (insbesondere Firefox und Opera) sehr eifrig zwischengespeicherte Kopien von CSS- und JS- Dateien verwenden, selbst zwischen Browsersitzungen. Dies führt zu einem Problem, wenn Sie eine dieser Dateien aktualisieren, der Browser des Benutzers die zwischengespeicherte Kopie jedoch weiterhin verwendet.
Die Frage ist: Was ist die eleganteste Methode, um den Browser des Benutzers zu zwingen, die Datei neu zu laden, wenn sie geändert wurde?
Im Idealfall würde die Lösung den Browser nicht zwingen, die Datei bei jedem Besuch der Seite neu zu laden. Ich werde meine eigene Lösung als Antwort veröffentlichen, aber ich bin gespannt, ob jemand eine bessere Lösung hat, und ich werde Ihre Stimmen entscheiden lassen.
Update:
Nachdem ich hier eine Weile die Diskussion zugelassen habe, habe ich den Vorschlag von John Millikin und da5id als nützlich empfunden . Es stellt sich heraus, dass es dafür einen Begriff gibt: Auto-Versionierung .
Ich habe unten eine neue Antwort veröffentlicht, die eine Kombination aus meiner ursprünglichen Lösung und Johns Vorschlag darstellt.
Eine andere Idee, die von SCdF vorgeschlagen wurde, wäre das Anhängen einer gefälschten Abfragezeichenfolge an die Datei. (Einige Python-Codes zur automatischen Verwendung des Zeitstempels als gefälschte Abfragezeichenfolge wurden von pi gesendet .) Es gibt jedoch einige Diskussionen darüber, ob der Browser eine Datei mit einer Abfragezeichenfolge zwischenspeichern würde oder nicht. (Denken Sie daran, dass der Browser die Datei zwischenspeichern und bei zukünftigen Besuchen verwenden soll. Wir möchten, dass die Datei erst dann wieder abgerufen wird, wenn sie geändert wurde.)
Da nicht klar ist, was mit einer gefälschten Abfragezeichenfolge passiert, akzeptiere ich diese Antwort nicht.
iframe.contentWindow.location.reload(true)
. Siehe Methode (4) von stackoverflow.com/a/22429796/999120 - das sind Bilder, aber das Gleiche gilt.
ExpiresActive On ExpiresDefault "modification"
.