javascript – 使用jQuery动态添加脚本到页面不会使用缓存的文件

前端之家收集整理的这篇文章主要介绍了javascript – 使用jQuery动态添加脚本到页面不会使用缓存的文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用jQuery来动态地添加一个脚本到我的页面,它的工作原理,但是jQuery在URL上添加了“_ = TIMESTAMP”,导致浏览器从不使用缓存.使用以下代码
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
</head>
<body>
    <script type="text/javascript">
        $("head").append('<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js"></scr' + 'ipt>');
    </script>
</body>
</html>

我可以在firebug中看到请求的URL是:

https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js?_=1313291978667

有没有人知道如何告诉jQuery不这样做?

谢谢

解决方法

为了回答您的原始问题,您会看到附加的时间戳,因为jQuery by default为脚本和jsonp调用设置cache:false,并将时间戳追加到URL.

为避免时间戳,您可以这样做:

$.ajaxPrefilter(function( options,originalOptions,jqXHR ) {
  if ( options.dataType == 'script' || originalOptions.dataType == 'script' ) {
      options.cache = true;
  }
});

这为所有$.ajax调用设置了一个全局prefilter,包括在请求脚本时由jQuery所做的调用.

我们检查dataType,以确保我们不会无意中定位其他ajax调用,并将缓存显式设置为true.这将避免时间戳附加问题.

您现在可以使用原始代码,它将从缓存中取出.

原文链接:https://www.f2er.com/jquery/154391.html

猜你在找的jQuery相关文章