【发布时间】:2013-12-13 11:23:33
【问题描述】:
在我的应用程序中,我使用了jquerytools 的叠加效果。 如demo 中所述,我正在覆盖层内打开一个外部页面。 在我的外部页面中,我正在使用一些 javascripts 来进行验证等。我的应用程序使用的是 Struts2 框架。
我遇到的问题是关于叠加效果的表现。在 Web 服务器 (apache) 中,我使用 mod_expires 让浏览器缓存资源。
问题是,虽然jquery-1.7.2.min.js 文件在打开叠加层时被缓存在所有应用程序中,但它不会被缓存,因为它的名称会随着动态生成的数字字符串而变化。
例如文件名是这样改变的:
- 主要应用:
jquery-1.7.2.min.js - 覆盖内:
jquery-1.7.2.min.js?_=1386932790620
这个数字字符串每次都会改变,阻止浏览器(Chrome)缓存资源。因此,每次用户打开叠加层时,jquery-1.7.2.min.js 都会被下载,从而降低性能。
你可以在附图中看到这个问题:
缓存:
非缓存:
我猜想jquerytools的叠加效果是使用AJAX加载外部页面,所以问题是: 有没有办法从附加到资源名称中删除该数字字符串?
还有其他解决方案可以防止每次javascript资源都下载覆盖效果吗?
【问题讨论】:
-
在源码中找到并删除
-
@scrowler 你什么意思?该字符串是动态附加的,并且每次都会更改。
-
@scrowler,嗯——猜猜
?_=xxxxxxx在那里,因为它是JSONP -
好的,你能在你的 Ajax 调用中将缓存设置为 true(默认)吗?
-
@scrowler 我现在不知道怎么做,我希望浏览器缓存 javascript。
标签: javascript jquery ajax caching jquery-tools