2

假设我们去任何有 jQuery 的网站(例如http://www.jquery.com),然后在调试控制台中,我们使用

jQuery("body").append("<script src='http://code.jquery.com/jquery-1.9.1.js'></script>");

在 Chrome 或 Firefox 中,我在“网络”选项卡中看到它在文件中拉取:

http://code.jquery.com/jquery-1.9.1.js?_=1366193092174

所以看起来它正在拉入文件,并在末尾添加了 UNIX 时间戳。我尝试拉入一个 can.js 文件:

jQuery("body").append("<script src='http://canjs.com/release/latest/can.jquery.js'></script>");

它是一样的,所以它不应该是服务器的东西(我使用 Charles Proxy 进行检查,一开始似乎没有 HTTP 重定向)。

然后我用了 2 个空白页,一个是使用 jQuery 开发者版本,另一个是使用.min生产版本,看看生产版本是否不会添加该?_=1366193092174部分,但他们都添加了它。jQuery 的 append() 文档没有提到任何时间戳或_=页面上的任何一个。实际发生了什么,如果出于某种原因,我不想?_=1366193092174添加该部分,有什么办法吗?

4

2 回答 2

2

我认为这是作为浏览器的缓存问题,当调用脚本链接时,它会看到有新参数要发送到这个 url,所以为了防止每次调用这个脚本,你需要删除这个问题,直到浏览器先缓存你的脚本时间 :

$.ajaxSetup({
    // Enable caching of AJAX responses
    cache: true
});
于 2013-04-17T10:41:48.947 回答
2

时间戳被添加到 url 的末尾,因为 jQuery 设置cache: falsescript将时间戳附加到 URL 的调用。而不是append(),您可以使用:

$.ajax({
  url: "http://code.jquery.com/jquery-1.9.1.js",
  dataType: "script",
  cache: true,
  success: function(){
    // ....
  }
});
于 2013-04-17T10:32:01.760 回答