Class CachingExec

java.lang.Object
org.apache.http.impl.client.cache.CachingExec
All Implemented Interfaces:
org.apache.http.impl.execchain.ClientExecChain

@Contract(threading=SAFE_CONDITIONAL) public class CachingExec extends Object implements org.apache.http.impl.execchain.ClientExecChain

Request executor in the request execution chain that is responsible for transparent client-side caching.

The current implementation is conditionally compliant with HTTP/1.1 (meaning all the MUST and MUST NOTs are obeyed), although quite a lot, though not all, of the SHOULDs and SHOULD NOTs are obeyed too.

Folks that would like to experiment with alternative storage backends should look at the HttpCacheStorage interface and the related package documentation there. You may also be interested in the provided

invalid reference
EhCache
and
invalid reference
memcached
storage backends.

Further responsibilities such as communication with the opposite endpoint is delegated to the next executor in the request execution chain.

Since:
4.3
  • Constructor Summary

    Constructors
    Constructor
    Description
    CachingExec(org.apache.http.impl.execchain.ClientExecChain backend)
     
    CachingExec(org.apache.http.impl.execchain.ClientExecChain backend, ResourceFactory resourceFactory, HttpCacheStorage storage, CacheConfig config)
     
    CachingExec(org.apache.http.impl.execchain.ClientExecChain backend, org.apache.http.impl.client.cache.HttpCache cache, CacheConfig config)
     
    CachingExec(org.apache.http.impl.execchain.ClientExecChain backend, org.apache.http.impl.client.cache.HttpCache cache, CacheConfig config, org.apache.http.impl.client.cache.AsynchronousValidator asynchRevalidator)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    org.apache.http.client.methods.CloseableHttpResponse
    execute(org.apache.http.conn.routing.HttpRoute route, org.apache.http.client.methods.HttpRequestWrapper request)
     
    org.apache.http.client.methods.CloseableHttpResponse
    execute(org.apache.http.conn.routing.HttpRoute route, org.apache.http.client.methods.HttpRequestWrapper request, org.apache.http.client.protocol.HttpClientContext context)
     
    org.apache.http.client.methods.CloseableHttpResponse
    execute(org.apache.http.conn.routing.HttpRoute route, org.apache.http.client.methods.HttpRequestWrapper request, org.apache.http.client.protocol.HttpClientContext context, org.apache.http.client.methods.HttpExecutionAware execAware)
     
    long
    Reports the number of times that the cache successfully responded to an HttpRequest without contacting the origin server.
    long
    Reports the number of times that the cache contacted the origin server because it had no appropriate response cached.
    long
    Reports the number of times that the cache was able to satisfy a response by revalidating an existing but stale cache entry.
    boolean
    Reports whether this CachingHttpClient implementation supports byte-range requests as specified by the Range and Content-Range headers.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • CachingExec

      public CachingExec(org.apache.http.impl.execchain.ClientExecChain backend, org.apache.http.impl.client.cache.HttpCache cache, CacheConfig config)
    • CachingExec

      public CachingExec(org.apache.http.impl.execchain.ClientExecChain backend, org.apache.http.impl.client.cache.HttpCache cache, CacheConfig config, org.apache.http.impl.client.cache.AsynchronousValidator asynchRevalidator)
    • CachingExec

      public CachingExec(org.apache.http.impl.execchain.ClientExecChain backend, ResourceFactory resourceFactory, HttpCacheStorage storage, CacheConfig config)
    • CachingExec

      public CachingExec(org.apache.http.impl.execchain.ClientExecChain backend)
  • Method Details

    • getCacheHits

      public long getCacheHits()
      Reports the number of times that the cache successfully responded to an HttpRequest without contacting the origin server.
      Returns:
      the number of cache hits
    • getCacheMisses

      public long getCacheMisses()
      Reports the number of times that the cache contacted the origin server because it had no appropriate response cached.
      Returns:
      the number of cache misses
    • getCacheUpdates

      public long getCacheUpdates()
      Reports the number of times that the cache was able to satisfy a response by revalidating an existing but stale cache entry.
      Returns:
      the number of cache revalidations
    • execute

      public org.apache.http.client.methods.CloseableHttpResponse execute(org.apache.http.conn.routing.HttpRoute route, org.apache.http.client.methods.HttpRequestWrapper request) throws IOException, org.apache.http.HttpException
      Throws:
      IOException
      org.apache.http.HttpException
    • execute

      public org.apache.http.client.methods.CloseableHttpResponse execute(org.apache.http.conn.routing.HttpRoute route, org.apache.http.client.methods.HttpRequestWrapper request, org.apache.http.client.protocol.HttpClientContext context) throws IOException, org.apache.http.HttpException
      Throws:
      IOException
      org.apache.http.HttpException
    • execute

      public org.apache.http.client.methods.CloseableHttpResponse execute(org.apache.http.conn.routing.HttpRoute route, org.apache.http.client.methods.HttpRequestWrapper request, org.apache.http.client.protocol.HttpClientContext context, org.apache.http.client.methods.HttpExecutionAware execAware) throws IOException, org.apache.http.HttpException
      Specified by:
      execute in interface org.apache.http.impl.execchain.ClientExecChain
      Throws:
      IOException
      org.apache.http.HttpException
    • supportsRangeAndContentRangeHeaders

      public boolean supportsRangeAndContentRangeHeaders()
      Reports whether this CachingHttpClient implementation supports byte-range requests as specified by the Range and Content-Range headers.
      Returns:
      true if byte-range requests are supported