1

当我通过“.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 字符串以从缓存中加载文件?

4

2 回答 2

2

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

$.ajax({
  url: "http://../test.js",
  cache: true,
  dataType: "script"
});
于 2013-11-06T11:23:56.350 回答
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));
于 2013-11-06T11:42:57.300 回答