2010-05-18 66 views
2

我正在查找IE8呈现缓存数据的实例。 Chrome不会遇到问题。IE对缓存内容的掌握

页面流程如下...提交下拉列表框选择,服务器端根据选择回写几个字段。然后发生其他事情。这是一个多步骤结账流程 - 第一步建立基础...第二步建立可选功能,第三步提交最终结果。

所有这些步骤都发生在一个.aspx页面 - jQuery根据当前步骤显示/隐藏不同的容器。除了Chrome浏览器能够完美工作这一事实之外,在服务器端和/或ajax位中寻找故障是很诱人的。

当IE用户第二次通过结账流程步骤时,数据从原始结账中保留。 (再次罚款FF和Chrome)。

产生,这不是得到更新的数据服务器端:

<div> 
    Registering users for: <b> 
     <%=Model.Webinar.Title %></b><br /> 
    <%=Model.Webinar.Presenter.FullName %><br /> 
    <b> 
     <%=Html.DisplayDate(Model.Webinar.Date)%></b> - <i> 
      <%=Html.DisplayTime(Model.Webinar.Date, timeZ, false)%> 
      - 
      <%=Html.DisplayTime(Model.Webinar.Date, Model.Webinar.Duration, timeZ)%><br /> 
     </i> 
</div> 

它不形成数据......这是真的,真的很奇怪IE如何被缓存这个那么起劲。我试着添加一个getDate()隐藏字段,并且看到了_some效果,但并不一致,防弹结果。

我已经看到了围绕引用IE和AJAX数据的大量讨论,但这不应该在这里发挥作用。有没有其他元代码可以使用?

回答

2

我会设置适当的HTTP标头,以防止在主页面和AJAX响应中进行缓存。尝试:

Cache-Control: no-cache 
Pragma: no-cache 

另外,如果这些表单字段是陈旧的,它可能是IE的自动完成引起的问题。尝试添加autocomplete =“off”以形成字段。

+0

没有涉及该步骤的AJAX。这是一个传统的往返提交,其中响应返回到同一页面--jquery决定显示哪个容器。 - 自动完成没有喜悦。 – justSteve 2010-05-20 09:10:18

+0

由于这只发生在IE浏览器(意思我们知道肯定这是一个客户端问题),我会尽量阻止IE缓存页面。您是否尝试过设置各种HTTP标头? – 2010-05-20 14:48:29