要从ajax请求中禁用缓存文件,可以使用jQuery的
$.ajaxSetup({
cache: false
});
但是jQuery如何做到这一点?我知道jQuery是一个javascript库,所以jQuery可以用普通的javascript完成。所以我的问题是: jQuery使用什么javascript代码来关闭ajax文件缓存?
答案 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时,该参数除外。