Erzwinge ein Neuladen der Seite in Chrome mit Javascript [kein Cache]
Ich muss eine Seite mit JavaScript neu laden und sicherstellen, dass sie nicht aus dem Browser-Cache geladen wird, sondern stattdessen die Seite vom Server neu lädt. [Da sich die Elemente der Seite in der Zwischenzeit geändert haben]
Auf IE und FF fand ich, dass der folgende Code gut funktionierte;
window.location.reload(true);
Unter Chrome oder Safari funktioniert es jedoch nicht.
Ich habe folgendes versucht, aber auch ohne Erfolg;
window.location.replace(location.href);
document.location.reload(true);
document.location.replace(location.href);
Gibt es eine Lösung für dieses Problem?
Ergebnisse
Nachdem ich dies untersucht habe, habe ich festgestellt, dass es sich bei diesem Problem um die Behandlung von HTTP-Protokollen handelt.
Chrome sendet eine Anfrage mitPragma: no-cache
HTTP-FeldServer antwortet mitLast-Modified: DATE1
FeldJS verwendetlocation.reload(true)
einen Neustart vom Server nicht zwischenspeichern zu erzwingenChrome sendet eine Anfrage mitIf-Modified-Since: DATE1
FeldServer antwortet mitHTTP Status 304 Not Modified
Die Serveranwendung ist schuld daran, dass sie die Statusänderung im dynamischen Seiteninhalt nicht bemerkt und daher a nicht zurückgibt200
. Chrome / WebKit ist jedoch der einzige Browser, der eine sendetIf-Modified-Since
Feld, wenn der JSlocation.reload(true)
wird genannt.
Ich dachte, ich würde meine Entdeckungen hier setzen, falls jemand anderes auf das gleiche Problem stößt.