Enable Cache Filter
This is a simple filter which sets the HTTP headers so that cacheing is enabled. I use this on all the static pages served by my system.
package uk.org.codex.filter;
import java.io.*;
import java.util.*;
import javax.servlet.http.*;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/*******************************************************************************
* Simple filter which adds headers to the response so that the response is
* cached for upto 1 hour.
* @author iann
* @version
******************************************************************************/
public class EnableCacheFilter implements Filter {
/***************************************************************************
* Adds appropriate headers to the response to enable cacheing on the client
* @param req
* @param res
* @param chain
* @throws java.io.IOException
* @throws javax.servlet.ServletException
**************************************************************************/
public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException,ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.addHeader("Cache-Control", "max-age=3600,public");
response.addDateHeader("Expires",System.currentTimeMillis() + 1000 * 60 * 60);
chain.doFilter(req, response);
}
/***************************************************************************
*
* @param filterConfig
**************************************************************************/
public void init(FilterConfig filterConfig) {
}
/***************************************************************************
*
**************************************************************************/
public void destroy() {
}
}
The relavent sections of the web xml file are below. This will enable caching of png, jpg, gif and css files.
<filter>
<filter-name>EnableCacheFilter</filter-name>
<filter-class>uk.org.codex.filter.EnableCacheFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EnableCacheFilter</filter-name>
<url-pattern>*.css</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>EnableCacheFilter</filter-name>
<url-pattern>*.png</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>EnableCacheFilter</filter-name>
<url-pattern>*.gif</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>EnableCacheFilter</filter-name>
<url-pattern>*.jpg</url-pattern>
</filter-mapping>
Last updated: 12 Mar 2008 20:15:56