服务器端等效的IE设置“检查存储页面的更新版本”

时间:2013-08-26 19:03:32

标签: .net asp.net-mvc-3 internet-explorer

我有一个网络应用程序,用户可以在其中填写或修改表单并保存,然后在需要时再返回以修改表单。保存表单后,所有值都存储在数据库中,当用户再次访问时,将使用这些值填充表单。

似乎每次用户返回保存后的表单时,表单将在保存之前显示其旧状态,直到用户刷新页面。除非用户具有检查存储页面的较新版本设置为每次访问网页的Internet Explorer设置,否则每次都会发生这种情况。

问题只发生在Internet Explorer中,任何其他浏览器都没有问题。我尝试过设置HTTP标头以防止缓存而没有运气。

我尝试将元标记<meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Expires" content="-1">添加到页面头部,我也尝试过:

Response.Expires = -1; 
Response.AddHeader("Pragma", "no-cache"); 
Response.CacheControl = "No-cache";
Response.Cache.SetCacheability(HttpCacheability.NoCache); 

在控制器中。

以下是回复标题:

  

HTTP / 1.1 200 OK
  服务器:ASP.NET Development Server / 10.0.0.0
  日期:2013年8月26日星期一20:10:33 GMT
  X-AspNet-Version:4.0.30319
  X-AspNetMvc-Version:3.0
  Pragma:no-cache
  缓存控制:无缓存,无存储
  Pragma:no-cache
  到期:-1
  内容类型:text / html;字符集= UTF-8
  内容长度:66131
  连接:关闭

有没有办法我每次用户登陆该页面时都可以强制IE检查存储页面的新版本?如果没有,MVC3中是否有针对此问题的解决方法?

提前致谢!

2 个答案:

答案 0 :(得分:3)

我们的工作是在URL中传递时间戳,以便页面每次都有唯一的地址,并且不会从缓存中显示。然后在控制器中忽略时间戳参数。

答案 1 :(得分:0)

您未能设置正确的标头以防止缓存。你究竟尝试了什么,以及有问题的标题是什么(看看Fiddler)。

this article中,我解释了IE的“检查新版本”功能是如何工作的,正如我所说:

  

要记住的最重要的事实是这四个选项   在没有缓存标头时影响行为   HTTP响应;当缓存标头存在时,Internet Explorer   永远尊重他们。