我使用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?
答案 0 :(得分:23)
How to disable the cache busting:
$.ajaxSetup({
cache: true
});
这将确保用户只从服务器获取脚本一次,然后从其本地缓存中获取(除非他们的浏览器设置阻止缓存)。
答案 1 :(得分:6)
$ .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函数没什么特别的,只是简写。
答案 2 :(得分:4)
遗憾的是,答案很简短。
但是,可以像这样覆盖getScript:$.getScript = function(url, callback, cache){
$.ajax({
type: "GET",
url: url,
success: callback,
dataType: "script",
cache: true
});
};
如果你在某个地方包含这个,它不会破坏现有的代码,也会缓存提取的脚本。
<强>优势强>
使用上面的代码段,您可以为页面上的所有脚本启用缓存。因此,您无需为每个脚本提取重新指定。
答案 3 :(得分:2)
1。 jQuery 1.12.0及更高版本支持选项对象签名:
$.getScript({
url: "foo.js",
cache: true
})
2。假设你设置cache:true
,文件将从浏览器缓存加载(除非浏览器缓存被禁用或过期,例如当devtools打开时)
答案 4 :(得分:-3)
您的浏览器会相应地缓存网址。所以您不必担心缓存。
如果你想破坏缓存,只需在网址中添加一个随机字符串,如下所示:
$.getScript('js/code.photoswipe.jquery-3.0.4.min.js?' + Math.random(), function () {
//do magic
});
?' + Math.random()
将允许随机数附加到您的js文件,因此每次请求文件时都会中断缓存(因为它会随机生成一个数字)