jQuery如何禁用AJAX缓存?

时间:2016-12-14 02:19:03

标签: javascript jquery ajax caching

要从ajax请求中禁用缓存文件,可以使用jQuery的

$.ajaxSetup({
    cache: false
});

但是jQuery如何做到这一点?我知道jQuery是一个javascript库,所以jQuery可以用普通的javascript完成。所以我的问题是: jQuery使用什么javascript代码来关闭ajax文件缓存

4 个答案:

答案 0 :(得分:1)

我认为今天的浏览器使用onunload = function(){}就像(是的,确切地说)一样阻止浏览器缓存网页,就像你离开时一样去另一页。

然而,重要的是,这与浏览器能够记住<script type='text/javascript' src='somePage.js'></script>标记中加载的JavaScript src时的能力不同}属性。如果您在实际网站上更改JavaScript,则需要更改该文件的名称,或者,如果客户端尚未清除其缓存,则他们的浏览器会在记住该文件时尝试加载该文件。

答案 1 :(得分:1)

这是缓存的来源

        if ( s.cache === false ) {
            s.url = rts.test( cacheURL ) ?

                // If there is already a '_' parameter, set its value
                cacheURL.replace( rts, "$1_=" + nonce++ ) :

                // Otherwise add one to the end
                cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
        }

是ajax的选择, 如果你设置缓存为false,它会向你的请求网址添加搜索, 'nonce'是jQuery.now(),这是一个时间; 因此,当您发送ajax时,浏览器不会进行用户缓存,请求url始终不同。

答案 2 :(得分:0)

关闭Ajax请求的浏览器缓存的最简单方法是使用基于时间的查询字符串参数。

var t = new Date().getTime();

console.log('some-url?_='+t);

这会产生以下查询字符串

  

?_ = 1481683928873

浏览器会将此视为不同的请求(假设它每微秒只生成一个)并且它将从服务器请求内容,而不是从其缓存中提供内容。

答案 3 :(得分:0)

如果您阅读docs,他们会说:

cache (default: true, false for dataType 'script' and 'jsonp')
Type: Boolean
  

如果设置为false,它将强制浏览器不缓存请求的页面。注意:将缓存设置为false只能与HEAD和GET请求一起正常工作。它的工作原理是将“_ = {timestamp}”附加到GET参数。其他类型的请求不需要该参数,但在IE8中,当对已经由GET请求的URL进行POST时,该参数除外。