我在返回json的ASP.NET AJAX应用程序中有一个WCF服务。我使用MS AJAX和客户端PageRequesManager在每个endRequest之后运行服务以进行任何部分页面更新。用户有一个表单,他们更新数据并提交,服务需要获取最新数据。当我使用FF和FireBug进行调试时,一切都像冠军一样。正是我编写它的方式,但是当我在IE中运行应用程序时,惊喜!初始呼叫是最新的,但后续呼叫未返回新的新数据。我通过添加记录然后在JSON对象上执行“.length”来验证。它应该增加1.我试图使用IE Developer Toolbar和Fiddler {我真的不明白}进行一些有限的调试,但我在Developer Toolbar中看到一个按钮来清除浏览器缓存。我试了一下,和kaboom! IE开始像我期望的那样工作。我在我的本地开发人员盒子上做了一次这样的工作,但是有多久谁知道?我可以为这个应用程序的用户做些什么?如果你愿意的话,我可以强迫IE以某种方式'获取最新'吗?当然,这个应用程序旨在在IE中运行。不幸的是,大多数用户可能从未听说过FireFox。有人有过similir问题吗?任何想法,将不胜感激。我没有发布任何代码,因为我不在源头附近,基本上它的ABC普通香草javascript。我的代码类似于Javascript:Crockford的Good Parts,如果有任何质量迹象的话。
感谢您的任何想法, 〜在圣地亚哥
答案 0 :(得分:3)
我假设您的方法在您的服务方法上使用WebGetAttribute
?这相当于一个HTTP GET动词,如果响应中的服务器没有指定缓存头,它将根据浏览器默认值进行缓存。
您有两种选择:
HttpRequest::Cache
property使用the various methods of HttpCachePolicy
为响应设置缓存选项。OutgoingWebResponseContext
设置WebOperationContext::Current::OutgoingResponse
的ETag和/或LastModified属性。更重要的是,您可以将Cache-Control
标题添加到the Headers
collection。 Here's a great article包含您可能需要了解的有关HTTP缓存的所有内容,以备不时之需。