java如何解除禁用页面缓存的限制_禁用页面缓存

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

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

7051fd79f8bc74dc439baab945cd183c.png

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

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

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

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

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

response.setDateHeader (“Expires”, 0);

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值