Package org.apache.http.client.cache

This package consists largely of constants and interfaces that are necessary for building new storage backends for the CachingHttpClient or for those clients wanting to get a little more behavioral information out of the cache module (for example, whether a particular response was a cache hit or not). Developers that simply want to instantiate and make use of the caching module will be better off looking at the CachingHttpClient documentation itself.

The classes in this package can be divided into two main groups: reference constants and interfaces needed for storage backends. In the former group, HeaderConstants contains a list of HTTP header names encoded as static fields, and the CacheResponseStatus enumeration values are set in an HttpContext by the CachingHttpClient to indicate how the request was processed by the caching module itself.

New storage backends will need to implement the HttpCacheStorage interface; they can then be passed to one of the CachingHttpClient constructors, which will happily make use of the new storage mechanism. The HttpCacheEntry class shows the datastructure for a cache entry that must be stored by the HttpCacheStorage. There is, in addition, the notion of a Resource and an associated ResourceFactory, which are used for managing the handling of cached response bodies. The default implementation used by the CachingHttpClient stores response bodies in memory; alternative implementations might involve storing these in a filesystem. A new ResourceFactory can be provided along with a HttpCacheStorage in one of the constructors to the CachingHttpClient. Finally, some of the additional storage backends we provide, like the EhcacheHttpCacheStorage and MemcachedHttpCacheStorage, can be provided with different serializers for the cache entry metadata; developers wanting to experiment with different serialization techniques should implement the HttpCacheEntrySerializer interface.