2013-08-22 49 views
0

我在vaadin中创建了一个项目,该项目在Tomcat上运行,但问题通常涉及java web应用程序。该应用程序由多个模块组成,这些模块一起构成应用程序。我想调整它,所以应用程序运行的方式由url确定。所以我给url附加一个参数,url看起来就是这样:避免在java web应用程序中使用浏览器缓存

http:myproject/anything/foo?mode=sth

我提取在方法onRequestStart()参数:

String param = request.getParameter("mode"); 

我根据参数生成应用程序。即参数a1仅显示模块a1,参数a2仅模块a2,...和参数normal整个应用程序。不过,我在browser cache上遇到问题,尤其是参数“normal”。在第一次运行这个参数之后,所有下次浏览器都不会“实现”一个新的请求,并从缓存中显示应用程序,这意味着最后一个模块显示。奇怪的是,我还没有注意到这个问题。尽管如此,它仍然是不可靠的,为了使它一定可靠,我必须避免浏览器缓存。什么可能是一个解决方案?我发现一种解决方案是在url上添加一个timestamp,每次更改都必须更新,以便始终读取一个新url并发出新请求。我怎么能附加它,虽然在Java应用程序?

回答

1

为您的HttpServletResponse设置适当的缓存控件标题。

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

如果您需要为您的所有网页做到这一点,更好地贯彻落实以此为Filter