避免在java Web应用程序中使用浏览器缓存

时间:2013-08-22 18:51:14

标签: url java-ee tomcat caching servlets

我正在vaadin创建一个项目,该项目在Tomcat上运行,但该问题通常涉及一个java web应用程序。该应用程序由许多模块组成,这些模块共同构成了应用程序。我想调整它,以便应用程序运行的方式由url确定。因此我将一个参数附加到url,url似乎是:

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 个答案:

答案 0 :(得分:1)

HttpServletResponse设置适当的缓存控制标头。

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

如果您需要为所有网页执行此操作,请更好地将其实现为Filter