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();
}
注:js文件通过getScript调用在页面上多次加载。因此,如果我仅对IE应用条件逻辑以通过将附加变量添加到文件来获取该js文件,则该文件可能会多次加载,这就是为什么我没有在客户端添加一个随机变量来获取新副本的JavaScript文件。我想用header指令解决这个问题。任何其他解决方案涉及JavaScript也是受欢迎的。
更新:我添加了Vary:*以防止缓存js文件,并且当我这样做时,所有浏览器都会获取js文件的新副本。我只想让IE每次都检索一个js文件的新副本。所有其他浏览器都可以缓存js文件。
将相同的“随机”变量添加到页面上的所有GetScript调用中。然后它会在页面内缓存,但不会跨页面加载。 –