如何禁用页面缓存

天有位博客好友遇到一个问题,在管理页面给导航树添加了一个节点,切换回导航树时发现刚添加的节点并没有增加,刷新页面也不行,重新登录系统导航树才会更新。导航树是我指导他做的,采用的是ajax发送servlet请求建立的,我看他演示了两遍,debug在刷新页面时servlet代码并没有执行,代码本身没有问题,猜测是 因为页面缓存原因。

为了确认是否是页面缓存造成的,进入如下设置,打开IE工具–Internet 选项,常规选项卡,点击设置,检查所存网页的最新版本一项选择第一项–每次访问时检查。

再进行测试发现程序运行正常,由此可以确认是由于页面缓存的原因造成的。

知道原因就好办了,上面的方法完全可以禁用缓存,但是这是在客户端的,绝大部分情形我们无法要求客户照我们所要求禁用所有页面缓存,这就必须在我们在代码上进行控制,我们可以在缓存页面加上如下html代码来禁用页面缓存:

<meta http-equiv=”pragma” content=”no-cache”><meta http-equiv=”cache-control” content=”no-cache”>

<meta http-equiv=”expires” content=”0″>

我们还原IE开始的设置选项,重新进行测试,发现同样能到达禁用缓存的目的。

如果需要禁用缓存的页面只有几个,可以在页面加入上面代码,如果页面太多,就有些繁琐,于是我想我们可以写个filter来过滤所有页面,将所有页面的缓存全部过滤掉,filter里面的代码如下:

response.setHeader(“Cache-Control”,”no-cache”);response.setHeader(“Pragma”,”no-cache”);

response.setDateHeader (“Expires”, 0);

经测试,所有页面的缓存全部禁用,达到预期目的。

讲了这么多,有个最关键的问题没有说,为什么这个页面的数据会缓存,什么时候不缓存,这个问题很抱歉,我也解释不清。

补充说明:在项目中我用过滤器禁用了所有页面的缓存,最近发现,有些servlet下载服务,用ie打开报错,提示ie无法下载,用别的浏览器正常,经查证是禁用缓存的原因,所以如果有下载服务的请不要禁用所有页面缓存,有选择性的按需禁用。

  • 作者:Office教程学习网
  • 来源网址:http://
  • 免责声明:本文所载资料仅供参考,资料的真实性、准确性由发布者负责,Viv-Media联合大众网对该资料或使用该资料所导致的结果概不承担任何责任。
  • 关于我们|提交网址|提交资讯|提交问答|友情链接|网站地图|广告赞助|帮助中心|举报中心|联系我们|国际站
  • Viv-Media联合大众网法律声明|服务条款|隐私声明|免责声明
  • Copyright 2010-2020 ©viv-media.com Corporation. All rights reserved. 冀ICP备11000884号-1  版权所有 Viv-Media联合大众网  合作伙伴:魅力文学网