将此js添加到我的页面:
$("#divExample").append("<script type='text\/javascript' src='\/scripts\/test_code.js'><\/script>");
请求:
http://.../scripts/test_code.js?_=1395691742415
我需要删除查询字符串,因为它阻止了js文件被缓存。我最好的猜测是,这在某种程度上与jQuery ajax有关,它在执行某些类型的调用时会附加相同类型的查询字符串(例如jsonp)。
我为什么这样做的背景:我需要推迟脚本加载(实际上是更大的js块的一部分),直到页面就绪事件完成为止。以上只是一个显示相同症状的减少样本。
目前正在使用jQuery 1.8.3,但我真的希望答案不包括升级,因为这样会破坏依赖项。
答案 0 :(得分:5)
将jQuery缓存全局设置为true
以防止这种情况。
$.ajaxSetup({
cache: true
});
即使这看起来只是针对ajax的配置,但它会影响您使用的<script>
标签。
如果您不想将全局应用于所有ajax请求,则可以使用普通Javascript(无jQuery)来执行此操作:
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = 'test.js';
document.getElementById("divExample").appendChild(s);
第三个选项是您可以使用$.ajax
导入脚本,如下所示:
$.ajax({
url : 'test.js',
type : 'script',
cache : true,
success : function(){
}
});