IE缓存ajax请求不执行javascript函数

时间:2013-04-16 01:29:54

标签: jquery ajax internet-explorer caching browser

我在客户端上通过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端设置浏览器检测代码。

2 个答案:

答案 0 :(得分:1)

根据jQuery doc for getScriptgetScript()调用没有缓存设置参数,所以你没有对你的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);
        }