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:
Posts (Atom)