理解jQuery $ .getScript()
我使用getScript动态加载我的插件:
$.getScript('js/code.photoswipe.jquery-3.0.4.min.js', function () { //do magic });
-
如何禁用缓存破坏? 目前它在最后生成数字: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 }); };
-
如果我多次调用$ .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打开时)