【问题标题】:Caching of JS resources with AJAX call in JQuery tools在 JQuery 工具中使用 AJAX 调用缓存 JS 资源
【发布时间】: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


【解决方案1】:

您可以尝试将其添加到您的代码中 -

$.ajaxSetup({ cache: true });

这将确保 jQuery 不使用缓存清除策略。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-06
    • 2012-05-01
    • 2014-01-21
    • 2017-05-15
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多