您的位置:首页 > 其它

如何防止浏览器和代理缓存我的网页

2010-02-14 20:35 211 查看
在asp.net开发的过程中,大家可能遇到过这样的一个问题,我新建了2个页面,一个是用来添加数据的页面(比如说发表文章) 的页面,假设为Add.aspx,当我们数据录入完毕后,要进行提交,我们让页面提交成功后返回页面Manage.aspx,这是一个简单的过程,涉及到跳转的问题,假设我跳转是用response.redirect或者javascript脚本location.href实现的。这样的话,我们会发现从add.aspx跳转到Manage.aspx后,浏览器的后退按钮是激活的,也就是说用户可以通过点击后退按钮跳转回去add.aspx页面,这时候,如果浏览器帮我们缓存了该页面,也就是add.aspx刚才的提交动作被缓存了,后退的话,该动作会再执行一次,这样导致了重复提交。

我一般的解决方法:

方法一:脚本

一个是Javascript跳转Response.write("<script language='javascript'>location.reload('manage.aspx');</script>");利用location.reload来实现这样就不会在浏览器的历史记录中留下痕迹,也就不会有该问题了。缺点:部分测试Firefox浏览器中不起作用。

方法二:meta标签

<meta http-equiv="CACHE-CONTROL" content="NO-CACHE" />

缺点:也只有IE浏览器通过。

方法三:服务器跳转

使用Server.transer("manage.aspx");

缺点:资源没有完全释放(如:add.aspx中定义了变量,在manage中还可以继续使用,如果manage中不用add.aspx中的资源情况下就浪费了)

方法四:response控制

Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1))
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Response.Cache.SetNoStore()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: