2016-12-14 84 views
0

从Ajax请求禁用缓存文件,你可以使用jQuery的jQuery如何禁用AJAX缓存?

$.ajaxSetup({ 
    cache: false 
}); 

但如何jQuery的做到这一点?我知道jQuery是一个JavaScript库,所以无论用jQuery做什么都可以用纯javascript完成。所以我的问题是:什么是JavaScript代码,jQuery使用引擎盖关闭ajax文件缓存

回答

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++; 
     } 

s是阿贾克斯的选项, 如果设置缓存错误,它会向你请求的URL添加一个搜索, 的“现时”是jQuery的来源。现在(),这是一个时间; 因此,当您发送ajax时,浏览器不会用户缓存,请求url始终不同。

+0

谢谢Vimo! –

1

我认为,现在的浏览器使用onunload = function(){}就这样(是的,没错)以防止浏览器缓存网页,因为它是当你离开它去到另一个网页。

然而,重要的是,当浏览器具有src属性时,它不能记住从<script type='text/javascript' src='somePage.js'></script>标签加载的JavaScript。如果您在实时网站上更改JavaScript,则需要更改该文件的名称,或者,如果客户端尚未清除缓存,则浏览器会尝试加载该文件,因为它记住了该文件。

0

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

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

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

这产生以下查询字符串

?_ = 1481683928873

该浏览器将认为这是一个不同的请求(假设它不仅使每微秒一个),它会从服务器请求内容,而不是从其缓存中提供内容。

0

如果你读了docs他们说:

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

如果设置为false,这将迫使请求的页面不被浏览器缓存。注意:将缓存设置为false只能在HEAD和GET请求中正常工作。它通过在GET参数中附加“_ = {timestamp}”来工作。其他类型的请求不需要该参数,除了在IE8中对POST已经请求的URL进行POST时以外。