出于某种原因,IE6/7 正在缓存返回 json 结果集的 ajax 调用。
我的页面进行调用,并返回一个 json 结果,然后我将其注入页面。
如何强制 IE6/7 进行此调用而不使用缓存的返回值?
出于某种原因,IE6/7 正在缓存返回 json 结果集的 ajax 调用。
我的页面进行调用,并返回一个 json 结果,然后我将其注入页面。
如何强制 IE6/7 进行此调用而不使用缓存的返回值?
您可能想要添加
Cache-Control: no-cache
当您提供 JSON 以告诉浏览器不要缓存响应时,添加到您的 HTML 响应标头。
在 ASP.NET(或 ASP.NET MVC)中,您可以这样做:
Response.Headers.Add("Cache-Control", "no-cache");
您可以在 ie 中更改您的设置,但问题很可能出在您的服务器上。您不能外出更改所有用户的浏览器设置。但是,如果您想至少在浏览器上检查它,请转到 Internet 选项->常规(选项卡)->浏览历史记录(部分)->设置(按钮)->“每次访问网页”确保您设置不过,它会在某个时候回来。
要在服务器上修复它,请查看http://www.mnot.net/cache_docs/
使用 curl (w/cygwin) 进行调试是找出实际通过网络发送的内容的好方法。
如果缓存控制对您不起作用(请参阅 DrJokepu 的回答),根据规范,任何带有查询字符串的 URL 的内容都应该是不可缓存的,因此您可以将一个毫无意义的查询参数附加到您的请求 URL。该值无关紧要,但如果您真的想要彻底,您可以附加 epoch 值,例如:
var url = "myrealurl?x=" + (new Date()).getTime();
但这是一个黑客;实际上,这应该通过服务器端的适当缓存标头来解决。
在返回 JsonResult 的控制器操作中,您需要在标头中指定以避免缓存:
ControllerContext.HttpContext.Response.AddHeader("Cache-Control", "no-cache");