public class TestHttpCaching {
public static void main(String[] args) throws Exception {
CacheConfig config = new CacheConfig();
config.setMaxObjectSize(Long.MAX_VALUE);
HttpClient httpClient = new CachingHttpClient(config);
doGetRequest(httpClient, args[0]);
doGetRequest(httpClient, args[0]);
}
private static void doGetRequest(HttpClient httpClient, String url) throws Exception {
HttpGet httpGet = new HttpGet(url);
HttpContext httpContext = new BasicHttpContext();
try {
System.out.print("Getting... ");
System.out.print(httpClient.execute(httpGet, httpContext).getStatusLine());
System.out.println(": " + httpContext.getAttribute(CachingHttpClient.CACHE_RESPONSE_STATUS));
} finally {
httpGet.releaseConnection();
}
}
}
The standard DefaultHttpClient does not do any caching. Instead you have to use the CachingHttpClient which wraps a DefaultHttpClient and adds caching functionality. Also notice how the cache is configured with a very large maximum object size. This avoids resources not being cached because they are too large for the standard in-memory cache (BasicHttpCacheStorage).
Tuesday, January 8, 2013
Check caching of HTTP resources
Setting up HTTP caching can be a bit of pain. Essentially the HTTP response needs to contain appropriate cache control headers, either an Expires header or a Cache-Control max-age directive.
Here's a quick Java program using the HttpClient and HttpClient Cache (both part of the Apache HttpComponents) to test client-side caching of HTTP responses.
Subscribe to:
Comments (Atom)
