struts1的tiles导致的response cache无法禁止的issue

在使用Struts1框架的项目中,遇到部分页面响应被意外缓存的问题,通过深入分析发现是由于特定do页面在tiles中进行了forward操作导致。通过将tiles移除并直接forward到目标页面,成功解决了缓存问题。
摘要由CSDN通过智能技术生成
近日struts 1项目中遇到一个很怪异的问题,项目中的所有.do都是继承自同一个root tiles,根JSP里面有把cache禁掉:

response.setHeader("Cache-Control", "no-cache, must-revalidate, proxy-revalidate, no-store");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "0");
response.setDateHeader("Expires", 0L);

但是在firebug里面看http response,大部分.do的response都没有cache,但是有个别.do的response cache依旧存在。。。

真见鬼了。。。

后仔细比对struts-config,发现那两个特殊的.do,都是在tiles里面forward到了其他.do:

<action path="/Index" type="com.cuishen.HomeAction">
<forward name="success" path="success.home"/>
</action>


<definition name="success.home" path="/user/info.do" />

上例中"/Index.do"和"/user/info.do"都是继承的相同的根JSP,但是访问"/Index.do"页面会被缓存,直接访问"/user/info.do"则不会!

后将"/Index.do"中的tiles移除,直接forward到"/user/info.do",后问题解决(如下代码)! (我擦,一般人还真想不到!!)

<action path="/Index" type="com.cuishen.HomeAction">
<forward name="success" path="/user/info.do"/>
</action>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值