看起来如果我使用 加载动态内容$.get(),结果会缓存在浏览器中。
$.get()
在 QueryString 中添加一些随机字符串似乎可以解决这个问题(我使用new Date().toString()),但这感觉就像一个 hack。
new Date().toString()
有没有其他方法可以实现这一目标?或者,如果唯一的字符串是实现这一目标的唯一方法,除了new Date()?
new Date()
我使用new Date().getTime(),这将避免冲突,除非您在同一毫秒内发生多个请求:
new Date().getTime()
$.get('/getdata?_=' + new Date().getTime(), function(data) { console.log(data); });
编辑: 这个答案已经有好几年了。它仍然有效(因此我没有删除它),但 现在有更好/更清洁的方法来实现这一点 。我更喜欢这种方法,
JQuery 的 $.get() 将缓存结果。代替
$.get("myurl", myCallback)
您应该使用 $.ajax,这将允许您关闭缓存:
$.ajax({url: "myurl", success: myCallback, cache: false});
但是如果您想在页面的生命周期内禁用 _每个_请求的缓存,这个答案也很有用。
以下将阻止所有未来的 AJAX 请求被缓存,无论您使用哪种 jQuery 方法($.get、$.ajax 等)
$.ajaxSetup({ cache: false });