在jQuery.html()时从缓存加载.js文件

时间:2013-11-06 11:21:09

标签: jquery html caching

当我通过“.html”jQuery从javascript文件中调用时,URL被映射,以便强制更新javascript文件。举个例子:

$(".r").html(data+'<script text="text/javascript" src="http://../test.js"></script>');

我在jQuery进行调用时得到的结果是使用以下URL加载文件:

Request URL: http://../test.js?_=1383736176662

因此,每次调用时,它都会创建一个新的URI字符串“?_ =”,其中包含随机数,可防止从缓存中加载“.js”文件。

有没有人知道如何拉这个URI字符串来从缓存中加载文件?

2 个答案:

答案 0 :(得分:2)

使用ajax调用加载脚本,您可以手动将缓存设置为false ...

$.ajax({
  url: "http://../test.js",
  cache: true,
  dataType: "script"
});

答案 1 :(得分:2)

如果您想使用.html()的内置功能来获取外部脚本,但仍想使用缓存,那么您可以使用$.ajaxSetup来控制它:

$.ajaxSetup({ cache: true });
$(".r").html(data+'<script src="http://../test.js"></script>');
$.ajaxSetup({ cache: false });

或猴子补丁$.fn.html:在应用时打开缓存:

$.fn.html = (function($html) {
  return function() {
    var cache = $.ajaxSetup()['cache'];
    $.ajaxSetup({cache: true});
    var ret = $html.apply($(this), arguments);
    $.ajaxSetup({cache: cache});
    return ret;
  };
}($.fn.html));