0

我在客户端通过 jQuery.getScript 加载了一个 javascript 文件,并且我在服务器端设置了 1hr 浏览器缓存的缓存控制标头。看起来 IE 缓存了 ajax 请求,并且文件中存在的函数不在 IE 中执行。在 getScript 调用中设置 false 是否会覆盖从服务器端设置的 1hr 缓存控制标头?

var jsCache = true;
    if($.browser.msie){
        jsCache = false;
    }
        if(!initialized){

            $.getScript('thatjsfileurl', function() { 
             $("#welcome").pluginInit({
                start:'newPage'
             });  
             initialized = true;
            },jsCache);
        }

注意:还有Akamai到位,所以不能在servlet端设置浏览器检测代码。

4

2 回答 2

1

根据 getScript的jQuery 文档,调用没有缓存设置参数,getScript()因此您无需对 jsCache 变量执行任何操作。

您可以在 URL 中添加时间戳编号并绕过任何 IE 缓存。

    if(!initialized) {
        $.getScript("thatjsfileurl" + "?now=" + new Date().getTime(), function() { 
            $("#welcome").pluginInit({
               start:'newPage'
            });  
            initialized = true;
        });
    }
于 2013-04-16T02:10:10.647 回答
0

通过测试我发布的上述代码,我自己想出了答案。当我们将变量缓存设置为 false 时,浏览器会覆盖服务器端标头变量(如 cache-control: 1hr 等)。每次 IE 浏览器在缓存设置为 false 时从服务器获取新副本。

var jsCache = true;
    if($.browser.msie){
        jsCache = false;
    }
        if(!initialized){

            $.getScript('thatjsfileurl', function() { 
             $("#welcome").pluginInit({
                start:'newPage'
             });  
             initialized = true;
            },jsCache);
        }
于 2013-04-26T20:15:25.563 回答