使用“后退”按钮时,强制“页面已过期”消息,而不是从服务器刷新页面

时间:2012-07-03 16:07:13

标签: asp.net caching browser-cache

我创建了一个包含两个页面的简单ASP.NET 3.5 Web应用程序。每个页面都有一个显示时间的标签和一个要回发的按钮。在每页的Page_Load中,我有以下内容:

        Response.ClearHeaders();
        Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1 
        Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1 
        Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1 
        Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1 
        Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1  
        Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1  
        Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1  
        Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.1  
        Response.AppendHeader("Keep-Alive", "timeout=3, max=993"); // HTTP 1.1  
        Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); // HTTP 1.1 

如果用户点击“返回”按钮,我想强制“页面已过期”消息。但是,正在发生的事情是后退按钮显示上一页,而不是从缓存中提取但刷新页面。标签将使用当前时间进行更新。我不希望页面刷新,而是显示“页面已过期”消息。我怎么强迫呢?我已经使用IE9对此进行了测试,但我需要对所有浏览器都采用相同的行为。

1 个答案:

答案 0 :(得分:1)

当浏览器向页面发送POST请求时,通常会给出“页面已过期”消息,并且用户希望刷新或返回该页面。要强制它,你必须使每个页面成为POST请求。 This thread可能能够为您提供JavaScript代码,以便将所有链接(即GET请求)转换为POST请求。

或者,您可以使用JavaScript或Cookie来保存所访问页面的历史记录,如果用户尝试返回页面,您可以使用它来重定向或给他们留言。