禁用页面缓存以使用浏览器后退按钮强制加载页面

时间:2009-05-07 16:09:56

标签: vb.net browser caching http-headers

我有一个asp.net网站,在我无法从服务器重新加载的页面上使用更新面板。我有这个用于母版页上的禁用页面缓存。

     Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1))
     Response.Cache.SetValidUntilExpires(False)
     Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches)
     Response.Cache.SetCacheability(HttpCacheability.NoCache)
     Response.Cache.SetNoStore()

当我点击浏览器后退按钮返回页面时,它表示页面已过期。我网站上的其他页面工作并调用页面加载,我找到的唯一解决方案,但无法使用是在更新面板中扭曲整个页面,但我不能这样做因为我在页面上有一个报表查看器不适用于ajax。如果有人可以帮助我会深深体会到它。

3 个答案:

答案 0 :(得分:1)

这不是浏览器缓存问题;这是一个回发的。您必须实现发布/重定向/获取模式,以避免“您想再次提交?/页面已过期”消息。

http://en.wikipedia.org/wiki/Post/Redirect/Get

这个东西的典型例子是当一个网页有一个在数据库中插入内容的保存按钮时。点击“保存”按钮 - >发生回发 - >代码在表格中插入一行 - >用户刷新页面(F5) - >再次发生回发 - >代码再次插入同一行。

要避免前一个示例中的双重插入,您需要在按下“保存”按钮时重定向,然后执行插入。

答案 1 :(得分:0)

只需在标题部分的视图文件中添加:

<head>
<script language="JavaScript">
<!--
javascript:window.history.forward(1);
//-->
</script>
</head>

在body body标签中添加:

<body onUnload="OperaReload()">
<input type="hidden" id="refreshed" value="no">

答案 2 :(得分:0)

要使用JavaScript重新加载页面,请使用以下命令:

window.location.replace(window.location.pathname);
相关问题