Class CachingHttpClient
- All Implemented Interfaces:
org.apache.http.client.HttpClient
The CachingHttpClient
is meant to be a drop-in replacement for
a DefaultHttpClient
that transparently adds 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. Generally
speaking, you construct a CachingHttpClient
by providing a
"backend" HttpClient
used for making actual network requests and
provide an HttpCacheStorage
instance to use for holding onto
cached responses. Additional configuration options can be provided by
passing in a CacheConfig
. Note that all of the usual client
related configuration you want to do vis-a-vis timeouts and connection
pools should be done on this backend client before constructing a
CachingHttpClient
from it.
Generally speaking, the CachingHttpClient
is implemented as a
Decorator
of the backend client; for any incoming request it attempts to satisfy
it from the cache, but if it can't, or if it needs to revalidate a stale
cache entry, it will use the backend client to make an actual request.
However, a proper HTTP/1.1 cache won't change the semantics of a request
and response; in particular, if you issue an unconditional request you
will get a full response (although it may be served to you from the cache,
or the cache may make a conditional request on your behalf to the origin).
This notion of "semantic transparency" means you should be able to drop
a CachingHttpClient
into an existing application without breaking
anything.
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
invalid reference
memcached
- Since:
- 4.1
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
Deprecated.This is the name under which theCacheResponseStatus
of a request (for example, whether it resulted in a cache hit) will be recorded if anHttpContext
is provided during execution. -
Constructor Summary
ConstructorsConstructorDescriptionDeprecated.Constructs aCachingHttpClient
with default caching settings that stores cache entries in memory and uses a vanillaDefaultHttpClient
for backend requests.CachingHttpClient
(org.apache.http.client.HttpClient client) Deprecated.Constructs aCachingHttpClient
with default caching settings that stores cache entries in memory and uses the givenHttpClient
for backend requests.CachingHttpClient
(org.apache.http.client.HttpClient client, HttpCacheStorage storage, CacheConfig config) Deprecated.Constructs aCachingHttpClient
with the given caching options that stores cache entries in the provided storage backend and uses the givenHttpClient
for backend requests.CachingHttpClient
(org.apache.http.client.HttpClient client, ResourceFactory resourceFactory, HttpCacheStorage storage, CacheConfig config) Deprecated.Constructs aCachingHttpClient
with the given caching options that stores cache entries in the provided storage backend and uses the givenHttpClient
for backend requests.CachingHttpClient
(org.apache.http.client.HttpClient client, CacheConfig config) Deprecated.Constructs aCachingHttpClient
with the given caching options that stores cache entries in memory and uses the givenHttpClient
for backend requests.CachingHttpClient
(CacheConfig config) Deprecated.Constructs aCachingHttpClient
with the given caching options that stores cache entries in memory and uses a vanillaDefaultHttpClient
for backend requests. -
Method Summary
Modifier and TypeMethodDescriptionorg.apache.http.HttpResponse
execute
(org.apache.http.client.methods.HttpUriRequest request) Deprecated.<T> T
execute
(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler) Deprecated.<T> T
execute
(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler, org.apache.http.protocol.HttpContext context) Deprecated.org.apache.http.HttpResponse
execute
(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.protocol.HttpContext context) Deprecated.org.apache.http.HttpResponse
execute
(org.apache.http.HttpHost target, org.apache.http.HttpRequest request) Deprecated.<T> T
execute
(org.apache.http.HttpHost target, org.apache.http.HttpRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler) Deprecated.<T> T
execute
(org.apache.http.HttpHost target, org.apache.http.HttpRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler, org.apache.http.protocol.HttpContext context) Deprecated.org.apache.http.HttpResponse
execute
(org.apache.http.HttpHost target, org.apache.http.HttpRequest originalRequest, org.apache.http.protocol.HttpContext context) Deprecated.long
Deprecated.Reports the number of times that the cache successfully responded to anHttpRequest
without contacting the origin server.long
Deprecated.Reports the number of times that the cache contacted the origin server because it had no appropriate response cached.long
Deprecated.Reports the number of times that the cache was able to satisfy a response by revalidating an existing but stale cache entry.org.apache.http.conn.ClientConnectionManager
Deprecated.org.apache.http.params.HttpParams
Deprecated.boolean
Deprecated.Reports whether thisCachingHttpClient
is configured as a shared (public) or non-shared (private) cache.boolean
Deprecated.Reports whether thisCachingHttpClient
implementation supports byte-range requests as specified by theRange
andContent-Range
headers.
-
Field Details
-
CACHE_RESPONSE_STATUS
Deprecated.This is the name under which theCacheResponseStatus
of a request (for example, whether it resulted in a cache hit) will be recorded if anHttpContext
is provided during execution.- See Also:
-
-
Constructor Details
-
CachingHttpClient
public CachingHttpClient()Deprecated.Constructs aCachingHttpClient
with default caching settings that stores cache entries in memory and uses a vanillaDefaultHttpClient
for backend requests. -
CachingHttpClient
Deprecated.Constructs aCachingHttpClient
with the given caching options that stores cache entries in memory and uses a vanillaDefaultHttpClient
for backend requests.- Parameters:
config
- cache module options
-
CachingHttpClient
public CachingHttpClient(org.apache.http.client.HttpClient client) Deprecated.Constructs aCachingHttpClient
with default caching settings that stores cache entries in memory and uses the givenHttpClient
for backend requests.- Parameters:
client
- used to make origin requests
-
CachingHttpClient
Deprecated.Constructs aCachingHttpClient
with the given caching options that stores cache entries in memory and uses the givenHttpClient
for backend requests.- Parameters:
client
- used to make origin requestsconfig
- cache module options
-
CachingHttpClient
public CachingHttpClient(org.apache.http.client.HttpClient client, ResourceFactory resourceFactory, HttpCacheStorage storage, CacheConfig config) Deprecated.Constructs aCachingHttpClient
with the given caching options that stores cache entries in the provided storage backend and uses the givenHttpClient
for backend requests. However, cached response bodies are managed using the givenResourceFactory
.- Parameters:
client
- used to make origin requestsresourceFactory
- how to manage cached response bodiesstorage
- where to store cache entriesconfig
- cache module options
-
CachingHttpClient
public CachingHttpClient(org.apache.http.client.HttpClient client, HttpCacheStorage storage, CacheConfig config) Deprecated.Constructs aCachingHttpClient
with the given caching options that stores cache entries in the provided storage backend and uses the givenHttpClient
for backend requests.- Parameters:
client
- used to make origin requestsstorage
- where to store cache entriesconfig
- cache module options
-
-
Method Details
-
getCacheHits
public long getCacheHits()Deprecated.Reports the number of times that the cache successfully responded to anHttpRequest
without contacting the origin server.- Returns:
- the number of cache hits
-
getCacheMisses
public long getCacheMisses()Deprecated.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()Deprecated.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.HttpResponse execute(org.apache.http.HttpHost target, org.apache.http.HttpRequest request) throws IOException Deprecated.- Specified by:
execute
in interfaceorg.apache.http.client.HttpClient
- Throws:
IOException
-
execute
public <T> T execute(org.apache.http.HttpHost target, org.apache.http.HttpRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler) throws IOException Deprecated.- Specified by:
execute
in interfaceorg.apache.http.client.HttpClient
- Throws:
IOException
-
execute
public <T> T execute(org.apache.http.HttpHost target, org.apache.http.HttpRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler, org.apache.http.protocol.HttpContext context) throws IOException Deprecated.- Specified by:
execute
in interfaceorg.apache.http.client.HttpClient
- Throws:
IOException
-
execute
public org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest request) throws IOException Deprecated.- Specified by:
execute
in interfaceorg.apache.http.client.HttpClient
- Throws:
IOException
-
execute
public org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.protocol.HttpContext context) throws IOException Deprecated.- Specified by:
execute
in interfaceorg.apache.http.client.HttpClient
- Throws:
IOException
-
execute
public <T> T execute(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler) throws IOException Deprecated.- Specified by:
execute
in interfaceorg.apache.http.client.HttpClient
- Throws:
IOException
-
execute
public <T> T execute(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler, org.apache.http.protocol.HttpContext context) throws IOException Deprecated.- Specified by:
execute
in interfaceorg.apache.http.client.HttpClient
- Throws:
IOException
-
getConnectionManager
public org.apache.http.conn.ClientConnectionManager getConnectionManager()Deprecated.- Specified by:
getConnectionManager
in interfaceorg.apache.http.client.HttpClient
-
getParams
public org.apache.http.params.HttpParams getParams()Deprecated.- Specified by:
getParams
in interfaceorg.apache.http.client.HttpClient
-
execute
public org.apache.http.HttpResponse execute(org.apache.http.HttpHost target, org.apache.http.HttpRequest originalRequest, org.apache.http.protocol.HttpContext context) throws IOException Deprecated.- Specified by:
execute
in interfaceorg.apache.http.client.HttpClient
- Throws:
IOException
-
supportsRangeAndContentRangeHeaders
public boolean supportsRangeAndContentRangeHeaders()Deprecated.Reports whether thisCachingHttpClient
implementation supports byte-range requests as specified by theRange
andContent-Range
headers.- Returns:
true
if byte-range requests are supported
-
CachingHttpClientBuilder
orCachingHttpClients
.