0

有没有办法停止使用每个 HTML 页面重新加载 jQuery?例如,我有两个 HTML 页面,都包含以下内容:

  <body>
      <script src="jquery"></script>

在这两种情况下,相同的 jQuery 被发送到浏览器。IE。jquery-1.6.min.js(目前)

Fiddler 似乎表明在这两种情况下都发送了文件。这是提琴手显示:

#  Result  Protocol  Host            URL      Body    Caching  Content-Type

1  200     HTTP      localhost:4567  /        9,101            text/html;charset=utf-8
2  200     HTTP      localhost:4567  /jquery  90,518           text/html;charset=utf-8
3  200     HTTP      localhost:4567  /namadd  8,706            text/html;charset=utf-8
4  200     HTTP      localhost:4567  /jquery  90,518           text/html;charset=utf-8

目前我正在使用 Ruby-Sinatra 微框架来提供数据,但最终它可能是别的东西。

  • 上面的第 1 项显示了正在发送的 HTML 页面。
  • 第 2 项显示 HTML 加载 jQuery,使用<script src="jquery"></script>.
  • 第 3 项显示正在加载的另一个 HTML 页面。
  • 第 4 项显示 HTML 加载 jQuery,使用<script src="jquery"></script>
4

3 回答 3

3

一般来说,您在这里谈论的是缓存。对于动态页面(IE:ASP.NET、php 等),您通常可以通过添加适当的 HTTP 标头以编程方式定义页面的可缓存性。

但是,对于像这样的静态文件,它的缓存将取决于 Web 服务器及其设置来确定。在 HTML 中没有简单的方法可以缓存它(您可能可以使用复杂的方法来完成)但是您想要做的是找出如何配置服务器以将文件设置为可缓存(您真的想要将其缓存在客户端上,以便它不会再次请求它)。

于 2012-10-09T11:24:10.137 回答
1

在您的情况下,您可以在加载另一个 jquery 库之前进行检查

像这样

if(window.$==undefined){ //Will return false if jquery is already loaded
   load your script 
}else{
  do not load the script 
}
于 2012-10-09T11:44:44.227 回答
0

我能找到解决这个问题的唯一方法是:

  1. 浏览器中的新 sessionStorage 和 localStorage 功能。

  2. ajax.googleapis.com

我想要实现的是只下载一次 jQuery 以供多个表单使用。

Google 的解决方案非常棒,因为除非清除浏览器缓存或类似情况,否则您只需永远加载一次。这样可以节省大量带宽。也许 localStorage 也能达到同样的效果

sessionStorage 和 localStorage 可能实现相似,但我还没有尝试使用它们,但我可能只是为了消除对第 3 方的依赖。我的意思是,谷歌是一家企业,对吧。

于 2012-10-11T03:39:05.320 回答