看起来,如果我使用$.get()加载动态内容,结果会缓存在浏览器中。
在QueryString中添加一些随机字符串似乎解决了这个问题(我使用new Date(). tostring()),但这感觉像是一个黑客。
还有别的办法吗? 或者,如果唯一字符串是实现这一点的唯一方法,除了new Date()还有其他建议吗?
看起来,如果我使用$.get()加载动态内容,结果会缓存在浏览器中。
在QueryString中添加一些随机字符串似乎解决了这个问题(我使用new Date(). tostring()),但这感觉像是一个黑客。
还有别的办法吗? 或者,如果唯一字符串是实现这一点的唯一方法,除了new Date()还有其他建议吗?
当前回答
这里所有的答案都在请求的URL上留下一个足迹,这将显示在服务器的访问日志中。
我需要一个基于头的解决方案,没有副作用,我发现它可以通过设置在如何控制网页缓存中提到的头来实现,在所有浏览器?
结果是,至少在Chrome上是这样的:
. ajax({美元 url: url、 标题:{ 'Cache-Control': '无缓存,无存储,必须重新验证', “杂注”:“no - cache”, “到期”:“0” } });
其他回答
也许你应该看看$.ajax()(如果你使用的是jQuery,它看起来就像jQuery)。 看一下:http://docs.jquery.com/Ajax/jQuery.ajax#options和选项“缓存”。
另一种方法是研究如何在服务器端缓存内容。
基本上只需要添加cache:false;在ajax中,你认为内容会随着进程的进行而改变。在内容不会改变的地方,你可以省略这个。这样你每次都会得到新的响应
参考文档: http://api.jquery.com/jquery.ajax/
你可以使用缓存属性:
$.ajax({
method: "GET",
url: "/Home/AddProduct?",
data: { param1: value1, param2: value2},
cache: false,
success: function (result) {
// TODO
}
});
我使用new Date().getTime(),这将避免冲突,除非你有多个请求发生在同一毫秒内:
$.get('/getdata?_=' + new Date().getTime(), function(data) {
console.log(data);
});
编辑:这个答案是几年前的了。它仍然可以工作(因此我没有删除它),但现在有更好/更干净的方法来实现这一点。我倾向于使用这种方法,但是如果您想在页面的生命周期内为每个请求禁用缓存,那么这个答案也很有用。
这里所有的答案都在请求的URL上留下一个足迹,这将显示在服务器的访问日志中。
我需要一个基于头的解决方案,没有副作用,我发现它可以通过设置在如何控制网页缓存中提到的头来实现,在所有浏览器?
结果是,至少在Chrome上是这样的:
. ajax({美元 url: url、 标题:{ 'Cache-Control': '无缓存,无存储,必须重新验证', “杂注”:“no - cache”, “到期”:“0” } });