<filter>
<filter-name>gwtCacheControlFilter</filter-name>
<filter-class>com.acme.server.GWTCacheControlFilter</filter-class>
<init-param>
<param-name>Cache-Control</param-name>
<param-value>max-age=31536000, public</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>gwtCacheControlFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException,
ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
String requestURI = httpRequest.getRequestURI();
if (requestURI.contains(".nocache.")) {
Date now = new Date();
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setDateHeader("Date", now.getTime());
// one day old
httpResponse.setDateHeader("Expires", now.getTime() - 86400000L);
httpResponse.setHeader("Pragma", "no-cache");
httpResponse.setHeader("Cache-control", "no-cache, no-store, must-revalidate");
} else if (requestURI.contains(".cache.")) {
HttpServletResponse httpResponse = (HttpServletResponse) response;
// one day old
httpResponse.setHeader("Cache-Control", "public, max-age=31536000");
httpResponse.setDateHeader("Expires", DateUtil.addDays(new Date(), 365).getTime());
}
filterChain.doFilter(request, response);
}