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).
Showing posts with label HTTP. Show all posts
Showing posts with label HTTP. Show all posts
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:
Posts (Atom)
