我希望将单个 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 文件。