0

我希望将单个 javascript 文件缓存 1 小时并使用下面的代码来实现这一点。由于某种原因(可能是因为该 js 文件是异步加载的),当 js 文件在缓存中时,该 js 文件中的函数不会在 IE8 中执行。所以我想在除IE之外的所有浏览器中缓存js文件。我可以设置一个标头,使 js 文件不只为 IE 浏览器缓存吗?

try { 

       response.setHeader("Cache-Control", "max-age="+AIMConstants.CACHE_CONTROL_TIME_PERIOD); 

      } catch (Exception e) { 
       logger.info("Error in setting the cache control"); 
       e.printStackTrace(); 
      } 

注意:通过 getScript 调用在页面上多次加载 js 文件。因此,如果我只为 IE 应用条件逻辑,通过将变量附加到文件来获取该 js 文件,则该文件可能会被加载多次,这就是为什么我不在客户端添加随机变量来获取新副本的原因的 javascript 文件。我想使用标头指令解决此问题。也欢迎任何其他涉及 javascript 的解决方案。

更新:我添加了 Vary:* 以防止缓存 js 文件,当我这样做时,所有浏览器都会获取 js 文件的新副本。我只希望 IE 每次都检索 js 文件的新副本。所有其他浏览器都可以缓存 js 文件。

4

1 回答 1

0

此代码每次仅适用于 IE 浏览器从服务器检索新副本。

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

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