如何防止浏览器和代理缓存我的网页
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()
我一般的解决方法:
方法一:脚本
一个是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()
相关文章推荐
- 网页性能优化:防止JavaScript、CSS阻塞浏览器渲染页面
- Android开发_如何调用 浏览器访问网页和Html文件
- 如何防止恶意网页篡改注册表
- onerror 事件 如何使用 onerror 事件捕获网页中的错误。(chrome、opera、safari 浏览器不支持)
- c++如何打开浏览器并制定网页
- [引]ASP.NET 移动网页 与 如何:使用仿真程序和浏览器在部署移动 Web 应用程序之前对其进行测试
- Asp如何防止网页频繁刷新?
- 网页开发之如何防止表单重复提交
- 【代码】如何在手机等移动平台上浏览器网页中点击链接跳转到QQ聊天界面
- 浏览器如何渲染网页?
- Dojo-最佳实践如何防止浏览器内存泄露
- Win8浏览器打开网页总是未响应怎么办?如何解决?
- 用Asp如何实现防止网页频繁刷新?
- 如何让网页在浏览器标题栏显示自己制作的图标ico
- 如何防止浏览器的缓存JSP页面
- 如何防止恶意网页篡改注册表
- 如何在浏览器网页中显示word文件内容
- 如何破解网页的防止复制功能
- ACTIVEX浏览器控件如何防止弹出脚本错误
- 如何使用指定浏览器打开网页