看起来,如果我使用$.get()加载动态内容,结果会缓存在浏览器中。
在QueryString中添加一些随机字符串似乎解决了这个问题(我使用new Date(). tostring()),但这感觉像是一个黑客。
还有别的办法吗? 或者,如果唯一字符串是实现这一点的唯一方法,除了new Date()还有其他建议吗?
看起来,如果我使用$.get()加载动态内容,结果会缓存在浏览器中。
在QueryString中添加一些随机字符串似乎解决了这个问题(我使用new Date(). tostring()),但这感觉像是一个黑客。
还有别的办法吗? 或者,如果唯一字符串是实现这一点的唯一方法,除了new Date()还有其他建议吗?
当前回答
JQuery的$.get()将缓存结果。而不是
$.get("myurl", myCallback)
你应该使用$。Ajax,它将允许你关闭缓存:
$.ajax({url: "myurl", success: myCallback, cache: false});
其他回答
另一种方法是在生成ajax调用响应的代码中不提供来自服务器端的缓存头:
response.setHeader( "Pragma", "no-cache" );
response.setHeader( "Cache-Control", "no-cache" );
response.setDateHeader( "Expires", 0 );
基本上只需要添加cache:false;在ajax中,你认为内容会随着进程的进行而改变。在内容不会改变的地方,你可以省略这个。这样你每次都会得到新的响应
Internet Explorer的Ajax缓存:你打算怎么做?提出了三种方法:
在查询字符串中添加一个缓存破坏令牌,比如?date=[timestamp]。在jQuery和YUI中,您可以告诉它们自动执行此操作。 使用POST而不是GET 发送一个HTTP响应头,明确禁止浏览器缓存它
用POST请求代替GET请求怎么样? (无论如何你应该……)
添加标题
headers: {
'Cache-Control':'no-cache'
}