IE添加到onclick处理程序时从缓存中获取脚本(动态添加)

时间:2014-09-17 10:07:57

标签: javascript internet-explorer caching internet-explorer-9

[IE9] 请考虑以下代码:

var scr = document.createElement("script");
scr.src = "http://collector.bonzai.mobi/expfreq?hours=1&freq=1&adid=abc&sn=source1&pub=publisher";
scr.onload = function(){
    alert("openPage " + openPage);
}
document.body.appendChild(scr);

问题是,当我将此代码直接放在 <script> 标记中时,它工作正常(意味着每次联系服务器以检索脚本时)。但是如果我在 document.onclick 函数中保留相同的代码,那么 IE9 就会在第二次从病毒库中缓存脚本。 (我可以看到304和<1ms)

PS :我无法使用 Date.now() 或任何类型的缓存突发机制附加到URL的末尾,因为后端实现依赖于缓存(ETag)。

另外,我建议您在尝试每次更改代码之前在IE浏览器中清除缓存。

任何建议都会有很大的帮助。感谢。

2 个答案:

答案 0 :(得分:0)

我得到了问题的解决方案。从服务器设置“Cache-Control:private,must-revalidate”标头解决了这个问题。

答案 1 :(得分:0)

来自客户端的解决方案可能是:

scr.src = "http://collector.bonzai.mobi/expfreq?hours=1&freq=1&adid=abc&sn=source1&pub=publisher&timestamp=" + new Date().getTime();

因此不会缓存每个请求。