I am trying to implement the GWT "perfect caching" by using a custom javax servlet filter. All files containing .nocache. should never be cached, and files containing .cache. should be cached for a week.
Here is the code for my filter: public class GWTCacheControlFilter implements Filter { @Override public void destroy() { } @Override public void init(final FilterConfig config) throws ServletException { } @Override public final void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain filterChain) throws IOException, ServletException { final HttpServletRequest httpRequest = (HttpServletRequest) request; final String requestURI = httpRequest.getRequestURI(); if (requestURI.contains(".nocache.")) { final Date now = new Date(); final HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.setDateHeader("Date", now.getTime()); httpResponse.setDateHeader("Expires", now.getTime() - 86400000L); httpResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0 httpResponse.setHeader("Cache-control", "no-cache, no-store, must-revalidate"); // HTTP 1.1 } else if (requestURI.contains(".cache.")) { final HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.setDateHeader("Expires", System.currentTimeMillis() + 604800000L); // 1 week in future. } filterChain.doFilter(request, response); } } When I reload the page I see in Firebug a 304 Not Modified status on my initial myapp.nocache.js file, which sometimes leads to people seeing only a white page after a new deploy. If I inspect the headers of the nocache file I don't see any Expires-tag. The .cache. files seem to be cached correctly however (one week): Date: Mon, 25 Jun 2012 15:11:57 GMT Expires: Mon, 02 Jul 2012 15:11:57 GMT I am using guice so in my servlet module I do: filter("*").through(GWTCacheControlFilter.class); However I have also tried adding the following to web.xml: <filter> <filter-name>gwtCacheControlFilter</filter-name> <filter-class>my.package.GWTCacheControlFilter</filter-class> </filter> <filter-mapping> <filter-name>gwtCacheControlFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> Anyone have some ideas what I am missing? I'm deploying using Glassfish Open Source edition 3.1.1. -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/5wb7eU-M3cUJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.