Stop Javascript und HTML vom Laden Aus dem Cache

Baue ich eine single page javascript app und beim Start der Anwendung verwende ich eine einzige javascript-Datei zu laden, die jeder anderen Datei, die ich brauche auf die schnelle. Wenn ich auf aktualisieren, laut firebug mein HTML-Seite sowie javascript-Seiten geladen werden, die mit einem 304 not Modified-Fehler und mein javascript nicht mehr funktioniert.

Ich verstehe, das ist wegen browser-caching, aber wie kann ich diese vermeiden? Ich lade das erste HTML-Seite mit einem einzelnen script-Aufruf

<script src="js/config.js" type="text/javascript"></script>

dann weiter geladen, der rest dynamisch aus in diesem Skript

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 Gmail verwendet cookies, um dies zu verhindern. Hat jemand eine Idee, wie man diesen Ansatz? Sollte ich das cookie auf dem server und dann überprüfen Sie es mit JS auf jeder Seite laden/aktualisieren und verwenden Sie so etwas wie Fenster.Lage.refresh (), wenn das cookie sagt mir die Seite aus dem cache geladen?

Nicht die Seite aktualisieren, neu zu LADEN statt.
Ich kann nicht erwarten, dass ein Benutzer der Anwendung zu wissen, nicht zu aktualisieren. Dies ist ein Fehler, der gelöst werden muss, nicht funktioniert, um im browser.
304 Not Modified ist kein Fehler.
Es sollte keine Rolle spielen, dass die JavaScript-Dateien werden nicht erneut angefordert. Sie werden trotzdem geladen. Hören Sie auf die richtige Veranstaltung zu initialisieren Ihrer Seite?

InformationsquelleAutor ryandlf | 2012-03-29

Schreibe einen Kommentar