我目前正在尝试异步加载一些js文件,以便它们无法阻止网站的其余部分。
我主要遵循这里的描述:
异步Javascript http://friendlybit.com/js/lazy-loading-asyncronous-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 中工作正常)?
EDIT:如果我查看 Operas Dragonfly 的“网络”选项卡,甚至没有在重新加载缓存的 JS 文件时发出请求,似乎它是直接从缓存加载它,甚至没有检查服务器上的文件。
EDIT2:我将测试它在缓存中保留多长时间。如果明天就消失了就好了。否则我仍然可以使用日期参数提出解决方法(因此接受该答案)。再次感谢。