java.lang.Object | |
↳ | org.apache.http.impl.client.cache.CachingHttpClient |
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
EhCache
and memcached
storage backends.
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
String | CACHE_RESPONSE_STATUS | This is the name under which the CacheResponseStatus of a request
(for example, whether it resulted in a cache hit) will be recorded if an
HttpContext is provided during execution. |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Constructs a
CachingHttpClient with default caching settings that
stores cache entries in memory and uses a vanilla DefaultHttpClient
for backend requests. | |||||||||||
Constructs a
CachingHttpClient with the given caching options that
stores cache entries in memory and uses a vanilla DefaultHttpClient
for backend requests. | |||||||||||
Constructs a
CachingHttpClient with default caching settings that
stores cache entries in memory and uses the given HttpClient
for backend requests. | |||||||||||
Constructs a
CachingHttpClient with the given caching options that
stores cache entries in memory and uses the given HttpClient
for backend requests. | |||||||||||
Constructs a
CachingHttpClient with the given caching options
that stores cache entries in the provided storage backend and uses
the given HttpClient for backend requests. | |||||||||||
Constructs a
CachingHttpClient with the given caching options
that stores cache entries in the provided storage backend and uses
the given HttpClient for backend requests. |
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Reports the number of times that the cache successfully responded
to an
HttpRequest without contacting the origin server. | |||||||||||
Reports the number of times that the cache contacted the origin
server because it had no appropriate response cached.
| |||||||||||
Reports the number of times that the cache was able to satisfy
a response by revalidating an existing but stale cache entry.
| |||||||||||
Reports whether this
CachingHttpClient is configured as
a shared (public) or non-shared (private) cache. | |||||||||||
Reports whether this
CachingHttpClient implementation
supports byte-range requests as specified by the Range
and Content-Range headers. |
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
| |||||||||||
From interface
org.apache.http.client.HttpClient
|
This is the name under which the CacheResponseStatus
of a request
(for example, whether it resulted in a cache hit) will be recorded if an
HttpContext is provided during execution.
Constructs a CachingHttpClient
with default caching settings that
stores cache entries in memory and uses a vanilla DefaultHttpClient
for backend requests.
Constructs a CachingHttpClient
with the given caching options that
stores cache entries in memory and uses a vanilla DefaultHttpClient
for backend requests.
config | cache module options |
---|
Constructs a CachingHttpClient
with default caching settings that
stores cache entries in memory and uses the given HttpClient
for backend requests.
client | used to make origin requests |
---|
Constructs a CachingHttpClient
with the given caching options that
stores cache entries in memory and uses the given HttpClient
for backend requests.
client | used to make origin requests |
---|---|
config | cache module options |
Constructs a CachingHttpClient
with the given caching options
that stores cache entries in the provided storage backend and uses
the given HttpClient
for backend requests. However, cached
response bodies are managed using the given ResourceFactory
.
client | used to make origin requests |
---|---|
resourceFactory | how to manage cached response bodies |
storage | where to store cache entries |
config | cache module options |
Constructs a CachingHttpClient
with the given caching options
that stores cache entries in the provided storage backend and uses
the given HttpClient
for backend requests.
client | used to make origin requests |
---|---|
storage | where to store cache entries |
config | cache module options |
IOException |
---|
IOException |
---|
IOException |
---|
IOException |
---|
IOException |
---|
Reports the number of times that the cache successfully responded
to an HttpRequest
without contacting the origin server.
Reports the number of times that the cache contacted the origin server because it had no appropriate response cached.
Reports the number of times that the cache was able to satisfy a response by revalidating an existing but stale cache entry.
Reports whether this CachingHttpClient
is configured as
a shared (public) or non-shared (private) cache. See setSharedCache(boolean)
.
true
if we are behaving as a shared (public)
cache
Reports whether this CachingHttpClient
implementation
supports byte-range requests as specified by the Range
and Content-Range
headers.
true
if byte-range requests are supported