Ich baue eine Javascript-App für eine Seite und wenn die Anwendung startet, benutze ich eine einzige Javascript-Datei, um jede andere Datei, die ich brauche, im laufenden Betrieb zu laden. Wenn ich auf "Aktualisieren" klicke, wird laut Firebug meine HTML-Seite sowie JavaScript-Seiten mit einem 304 Not Modified Error geladen und mein JavaScript funktioniert nicht mehr.Stoppen Sie Javascript und HTML vom Laden vom Cache
Ich verstehe, dass dies auf Browser-Caching zurückzuführen ist, aber wie kann ich das vermeiden? Ich lade die ursprüngliche HTML-Seite mit einem einzigen Skript Aufruf
<script src="js/config.js" type="text/javascript"></script>
und anschließend alle anderen aus diesem Skript dynamisch laden
window.onload = function() {
var scripts = ['http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js', 'js/core.js', 'js/sandbox.js']; //Application scripts
var loaded = 0;
//Callback is executed after all scripts have been loaded.
var callback = function() {
if (loaded + 1 == scripts.length) {
//Create Modules
CORE.loader("js/modules/Login.js", function() {
CORE.createModule('loginForm', Login);
});
//Create HTML bindings.
CORE.createBinding('appContainer', '#Login', 'login.html');
CORE.bindHTML(window.location.hash); //Loads hash based page on startup
} else {
loaded++;
loadScript(scripts[loaded], callback);
}
};
loadScript(scripts[0], callback);
function loadScript(scriptSrc, callback) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.async = true;
script.src = scripts[loaded];
if (script.readyState) {
script.onreadystatechange = function() {
if (script.readyState == 'loaded' || script.readyState == 'complete') {
script.onreadystatechange = null;
callback();
}
};
} else {
script.onload = function() {
callback();
};
}
document.getElementsByTagName('head')[0].appendChild(script);
}
};
Ich weiß, dass Google Mail-Cookies verwendet, dies zu verhindern. Hat jemand eine Idee, wie man diesen Ansatz annimmt? Sollte ich das Cookie auf dem Server setzen und es dann mit JS auf jeder Seite überprüfen, laden/aktualisieren und etwas wie window.location.refresh() verwenden, wenn das Cookie mir sagt, dass die Seite aus dem Cache geladen wurde?
Sie die Seite nicht aktualisiert werden, anstatt nachzuladen. –
Ich kann nicht erwarten, dass ein Benutzer der Anwendung nicht aktualisiert wird. Dies ist ein Fehler, der gelöst werden muss, nicht im Browser funktioniert. – ryandlf
'304 Not Modified' ist kein Fehler. – user123444555621