net.sf.ehcache.constructs.web.filter

Class SimplePageCachingFilter

public class SimplePageCachingFilter extends CachingFilter

A simple page CachingFilter suitable for most uses.

It uses a Singleton CacheManager created with the default factory method. Override to use a different CacheManager

The meaning of page is:

For jsp:included page fragments see SimplePageFragmentCachingFilter.

Keys

Pages are cached based on their key. The key for this cache is the URI followed by the query string. An example is /admin/SomePage.jsp?id=1234&name=Beagle.

This key technique is suitable for a wide range of uses. It is independent of hostname and port number, so will work well in situations where there are multiple domains which get the same content, or where users access based on different port numbers.

A problem can occur with tracking software, where unique ids are inserted into request query strings. Because each request generates a unique key, there will never be a cache hit. For these situations it is better to parse the request parameters and override calculateKey with an implementation that takes account of only the significant ones.

Configuring Caching with ehcache

A cache entry in ehcache.xml should be configured with the name NAME.

Cache attributes including expiry are configured per cache name. To specify a different behaviour simply subclass, specify a new name and create a separate cache entry for it.

Gzipping

Significant network efficiencies can be gained by gzipping responses.

Whether a response can be gzipped depends on:

Responses are automatically gzipped and stored that way in the cache. For requests which do not accept gzip encoding the page is retrieved from the cache, ungzipped and returned to the user agent. The ungzipping is high performance.

Version: $Id: SimplePageCachingFilter.java 125 2006-06-12 06:52:31Z gregluck $

Author: Greg Luck

Field Summary
static StringNAME
The name of the filter.
Method Summary
protected StringcalculateKey(HttpServletRequest httpRequest)
Pages are cached based on their key.
protected CacheManagergetCacheManager()
Gets the CacheManager for this CachingFilter.
protected StringgetCacheName()
A meaningful name representative of the JSP page being cached.

Field Detail

NAME

public static final String NAME
The name of the filter. This should match a cache name in ehcache.xml

Method Detail

calculateKey

protected String calculateKey(HttpServletRequest httpRequest)
Pages are cached based on their key. The key for this cache is the URI followed by the query string. An example is /admin/SomePage.jsp?id=1234&name=Beagle.

This key technique is suitable for a wide range of uses. It is independent of hostname and port number, so will work well in situations where there are multiple domains which get the same content, or where users access based on different port numbers.

A problem can occur with tracking software, where unique ids are inserted into request query strings. Because each request generates a unique key, there will never be a cache hit. For these situations it is better to parse the request parameters and override calculateKey with an implementation that takes account of only the significant ones.

The key should be unique

Parameters: httpRequest

Returns: the key, generally the URI plus request parameters

getCacheManager

protected CacheManager getCacheManager()
Gets the CacheManager for this CachingFilter. It is therefore up to subclasses what CacheManager to use.

This method was introduced in ehcache 1.2.1. Older versions used a singleton CacheManager instance created with the default factory method.

Returns: the CacheManager to be used

Since: 1.2.1

getCacheName

protected String getCacheName()
A meaningful name representative of the JSP page being cached.

The name must match the name of a configured cache in ehcache.xml

Returns: the name of the cache to use for this filter.