理解jQuery $ .getScript()

我使用getScript动态加载我的插件:

$.getScript('js/code.photoswipe.jquery-3.0.4.min.js', function () { //do magic }); 
  1. 如何禁用缓存破坏? 目前它在最后生成数字:js / code.photoswipe.jquery-3.0.4.min.js?_ = 1326992601415我看到了这个,但不知道如何在我的情况下使用它:

     $.getScript = function (url, callback, cache) { $.ajax({ type: "GET", url: url, success: callback, dataType: "script", cache: cache }); }; 
  2. 如果我多次调用$ .getScript添加相同的js文件,它每次都会请求获取该文件吗? 如果是这样,有没有办法检查我们是否已导入该脚本,所以我们可以避免再次为同一个文件调用getScript?

您的浏览器将相应地缓存该URL。因此您不必担心缓存。

但是,如果你想破坏缓存,只需在url中添加一个随机字符串,如下所示:

 $.getScript('js/code.photoswipe.jquery-3.0.4.min.js?' + Math.random(), function () { //do magic }); 

?' + Math.random() ?' + Math.random()将允许随机数附加到您的js文件,因此每次对文件的请求都会中断缓存(因为它随机生成一个数字)

如何禁用缓存清除 :

 $.ajaxSetup({ cache: true }); 

这将确保用户仅从服务器获取脚本一次,然后从其本地缓存中获取脚本(除非他们的浏览器设置阻止缓存)。

$ .getScript的jQuery文档说getScript是以下的简写:

 $.ajax({ url: url, dataType: "script", success: success }); 

http://api.jquery.com/jQuery.getScript/

这意味着您只需要添加一个cache:true参数。

 $.ajax({ url: url, cache : true, dataType: "script", success: success }); 

就那么简单。 getScript函数没什么特别的,只是简写。

不幸的是,简短的回答,你不能。

但是可以像这样覆盖getScript:

 $.getScript = function(url, callback, cache){ $.ajax({ type: "GET", url: url, success: callback, dataType: "script", cache: true }); }; 

如果将它包含在某个地方的js中,它将不会破坏现有代码,并且还会缓存提取的脚本。

优点
使用上面的代码段,您可以为页面上的所有脚本启用缓存。 因此,您无需为每个脚本提取重新指定。

1。 jQuery 1.12.0及更高版本支持选项对象签名:

 $.getScript({ url: "foo.js", cache: true }) 

2。 假设您设置了cache:true ,文件将从浏览器缓存中加载(除非浏览器缓存被禁用或过期,例如当devtools打开时)