我正在構建單頁JavaScript應用程序,並且在應用程序啓動時我使用單個JavaScript文件加載我需要的其他每個文件。當我點擊刷新,根據螢火蟲,我的HTML頁面以及JavaScript頁面將加載304未修改錯誤,我的JavaScript停止工作。停止使用從緩存中加載的Javascript和HTML
我明白這是由於瀏覽器緩存,但我該如何避免這種情況?我有一個腳本調用
<script src="js/config.js" type="text/javascript"></script>
載入初始HTML頁面,然後繼續從該腳本
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);
}
};
我知道Gmail使用Cookie來防止這種內動態加載的休息。有沒有人有任何想法如何採取這種做法?我應該在服務器上設置Cookie,然後在每個頁面加載/刷新時使用JS檢查它,如果cookie告訴我頁面從緩存中加載,請使用window.location.refresh()之類的內容。
不要刷新頁面,重載代替。 – 2012-03-29 02:52:12
我不能指望應用程序的用戶知道不刷新。這是一個需要解決的問題,而不是在瀏覽器中解決。 – ryandlf 2012-03-29 03:02:09
'304 Not Modified'不是錯誤。 – user123444555621 2012-03-29 04:53:13