我在客户端上通过jQuery.getScript加载了一个javascript文件,我在服务器端使用1小时浏览器缓存设置缓存控制头。看起来IE缓存ajax请求,文件中存在的函数不在IE中执行。在getScript调用中设置为false会覆盖从服务器端设置的1小时的缓存控制头吗?
var jsCache = true;
if($.browser.msie){
jsCache = false;
}
if(!initialized){
$.getScript('thatjsfileurl', function() {
$("#welcome").pluginInit({
start:'newPage'
});
initialized = true;
},jsCache);
}
注意:还有Akamai,因此无法在servlet端设置浏览器检测代码。
答案 0 :(得分:1)
根据jQuery doc for getScript,getScript()
调用没有缓存设置参数,所以你没有对你的jsCache变量做任何事情。
您可以在URL中添加时间戳编号,并绕过任何IE缓存。
if(!initialized) {
$.getScript("thatjsfileurl" + "?now=" + new Date().getTime(), function() {
$("#welcome").pluginInit({
start:'newPage'
});
initialized = true;
});
}
答案 1 :(得分:0)
我想通过测试我发布的上述代码自己回答。当我们将变量设置为cache设置为false时,浏览器会覆盖服务器端标头变量,如缓存控制:1小时等。每次IE浏览器在缓存设置为false时从服务器获取新副本。
var jsCache = true;
if($.browser.msie){
jsCache = false;
}
if(!initialized){
$.getScript('thatjsfileurl', function() {
$("#welcome").pluginInit({
start:'newPage'
});
initialized = true;
},jsCache);
}