我目前正試圖加載一些js文件異步,以便他們無法阻止網站的其餘部分。 我主要是跟着在這裏找到的描述:與onload事件異步JavaScript加載緩存問題
在javascript文件這一偉大工程的非阻塞加載的條件,但我現在得到了問題的JavaScript文件緩存,並保持即使緩存我改變內容(也做shift-reload沒有任何幫助)。
我現在加載腳本的代碼如下所示:
(function() {
function xx_async_load() {
var xx = document.createElement('script');
xx.type = 'text/javascript';
xx.async = true;
xx.src = 'http://myserver.de/myjs.js';
var el = document.getElementsByTagName('script')[0];
el.parentNode.insertBefore(xx, el);
}
if (window.addEventListener) {
window.addEventListener('load', xx_async_load, false);
} else if (window.attachEvent){
window.attachEvent('onload', xx_async_load);
}
})();
如果我直接調用內部「xx_async_load」的代碼,改變myjs.js,變化越來越認可,但如果我通過onload事件加載它,它始終保持緩存,並且更改不會被識別。
有沒有人知道我如何讓瀏覽器識別緩存文件中的變化(問題出現在Opera,FF和IE工作正常)?
編輯:如果我看歌劇蜻蜓的「網絡」選項卡,甚至沒有重新加載的緩存JS文件做了要求,它似乎是直接從緩存中加載它,甚至沒有檢查針對服務器上的文件。
EDIT2:我將測試它停留在緩存多久。如果它一直到明天都很好。否則,我仍然可以使用日期參數來提出解決方法(因此接受該答案)。 Thx再次。
ie:'xx.src ='http://myserver.de/myjs.js?' + new Date()。getTime();' – Mic 2010-09-09 08:38:09
正如Mic所說,使用日期是一個很好的ID,我主要使用Guids – Nealv 2010-09-09 08:44:05
謝謝,這將工作。但是,它永遠不會被緩存,並且該腳本稍後將在網頁瀏覽量巨大的網站上使用。因此,根本不緩存對我來說不是真正的解決方案。也許我每天都會與「日期」一起去。我仍然會讓它不被接受,也許有人提出了另一種解決方案,但謝謝。編輯:哈哈花了很長時間與我的評論;) – enricog 2010-09-09 08:44:55