我正在使用jquery.ajax方法将GET请求发送到服务器,缓存应该被破坏,因此缓存设置为false,到目前为止一直很好。
jQuery会自动为request-url添加一个时间戳(我猜是epoch-milliseconds),以便进行缓存。有没有办法控制jQuery使用的时间戳? (甚至秒就足够了,并帮助服务器正确地进行缓存,...)
答案 0 :(得分:0)
试试这个:
$.ajaxSetup({cache: false});
这样做是告诉浏览器永远不要缓存AJAX请求。
由于某些浏览器倾向于缓存AJAX请求,特别是当他们发出HTTP GET请求时,我经历过奇怪的行为。
如果您不关闭AJAX请求缓存,IE 11将尝试使用其缓存版本的AJAX请求和LIE关于服务器返回的HTTP状态(" 304 Not Modified")。
答案 1 :(得分:0)
不用手动更改jQuery的代码,而不是干净利落。
深入了解jQuery代码,我们看到jQuery生成的nonce(在这种情况下只是时间戳)在那里非常硬编码。
https://github.com/jquery/jquery/blob/91850ecbbe04ad8f5d89dc050aa1d9002047c435/src/ajax.js(第607行)
传入了nonce
变量,但是如果我们跟踪回溯,则会导致jQuery.now()
,这只是(new Date).getTime()
的别名。
所以你的选择是:
1)手动将自己的值附加到每个URI,并忽略jQuery的值。
2)脏。覆盖jQuery的now()
函数以返回您寻找的值。只是想着它让我颤抖!由于这个原因,您可能会遇到其他意外错误,所以我不推荐它,但它是可能的。如果你仍然返回一个接近当前时间戳的时间戳,也许它不会太糟糕,但这可能不是你的情况。一个简单的例子:https://jsfiddle.net/pf5pskg5/