小编典典

防止浏览器缓存 AJAX 调用结果

all

看起来如果我使用 加载动态内容$.get(),结果会缓存在浏览器中。

在 QueryString 中添加一些随机字符串似乎可以解决这个问题(我使用new Date().toString()),但这感觉就像一个 hack。

有没有其他方法可以实现这一目标?或者,如果唯一的字符串是实现这一目标的唯一方法,除了new Date()?


阅读 94

收藏
2022-05-04

共1个答案

小编典典

我使用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 });
2022-05-04