0

出于某种原因,IE6/7 正在缓存返回 json 结果集的 ajax 调用。

我的页面进行调用,并返回一个 json 结果,然后我将其注入页面。

如何强制 IE6/7 进行此调用而不使用缓存的返回值?

4

4 回答 4

1

您可能想要添加

Cache-Control: no-cache

当您提供 JSON 以告诉浏览器不要缓存响应时,添加到您的 HTML 响应标头。

在 ASP.NET(或 ASP.NET MVC)中,您可以这样做:

Response.Headers.Add("Cache-Control", "no-cache");
于 2009-08-18T14:17:20.920 回答
1

您可以在 ie 中更改您的设置,但问题很可能出在您的服务器上。您不能外出更改所有用户的浏览器设置。但是,如果您想至少在浏览器上检查它,请转到 Internet 选项->常规(选项卡)->浏览历史记录(部分)->设置(按钮)->“每次访问网页”确保您设置不过,它会在某个时候回来。

要在服务器上修复它,请查看http://www.mnot.net/cache_docs/

使用 curl (w/cygwin) 进行调试是找出实际通过网络发送的内容的好方法。

于 2009-08-18T14:21:33.693 回答
1

如果缓存控制对您不起作用(请参阅 DrJokepu 的回答),根据规范,任何带有查询字符串的 URL 的内容都应该是不可缓存的,因此您可以将一个毫无意义的查询参数附加到您的请求 URL。该值无关紧要,但如果您真的想要彻底,您可以附加 epoch 值,例如:

var url = "myrealurl?x=" + (new Date()).getTime();

但这是一个黑客;实际上,这应该通过服务器端的适当缓​​存标头来解决。

于 2009-08-18T14:21:40.463 回答
1

在返回 JsonResult 的控制器操作中,您需要在标头中指定以避免缓存:

ControllerContext.HttpContext.Response.AddHeader("Cache-Control", "no-cache");
于 2009-11-24T17:35:12.027 回答