我希望将单个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文件。我想使用header指令解决这个问题。任何其他涉及javascript的解决方案也是受欢迎的。
更新:我添加了Vary:*以防止缓存js文件,当我这样做时,所有浏览器都会获取js文件的新副本。我希望每次只有IE来检索js文件的新副本。所有其他浏览器都可以缓存js文件。
答案 0 :(得分:0)
此代码仅适用于IE浏览器,每次从服务器检索一个新副本。
var jsCache = true;
if($.browser.msie){
jsCache = false;
}
if(!initialized){
$.getScript('thatjsfileurl', function() {
$("#welcome").pluginInit({
start:'newPage'
});
initialized = true;
},jsCache);
}