hc-httpclient-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alan Ho <ideawh...@gmail.com>
Subject Re: Best practice for caching configuration
Date Sat, 17 Mar 2012 16:26:48 GMT
Hi Jon,

I'm using caching on an android client, and I have 3 major scenarios:

Making small restful webservice calls (maximum 64 KB in Size), and second making much larger
calls for pictures and articles, and lastly streaming video.

Can you make a suggestion on cache configurations that would work for each scenario ? I know
that it's subject to implementation / how much ram or storage I have / etc - but I'm hoping
you can give me a starting point. 

Thanks,
Alan Ho

On Mar 17, 2012, at 10:50 AM, Jon Moore <jonm@apache.org> wrote:

> Hi Robert,
> 
> Naturally, the ultimate answer is: it depends on your scenario! However, I
> can perhaps provide some ways of thinking about your cache configuration.
> 
> First, one of your choices will be which HttpCacheStorage implementation(s)
> you want to use; there are 3 supported in the distribution:
> 1. an in-memory cache; this is the default implementation if you don't
> specify an alternative
> 2. an EhCache backend; this can be used to build a tiered in-memory and
> on-disk cache, and the on-disk can be configured to persist across
> application invocations
> 3. a memcached backend; this can be used either to keep your JVM heap size
> smaller by keeping the cache memory out-of-process, or as a shared
> memcached pool for a cluster of application servers, for example
> 
> Now, because the CachingHttpClient is a decorator, you can actually use
> multiple of these at the same time by wrapping them one inside the other.
> So, for example, you can have a L1 in-memory cache backed by a L2 EhCache
> that spills to disk.
> 
> In all cases, you will want to be concerned with the total storage
> resources you want to allocate to the cache; EhCache and memcached have
> their own configuration for this, but you may want to tweak this for the
> in-memory cache if that's what you use. One thing to look at is the maximum
> response body size that you'll cache, which currently defaults to 8KB; if
> you plan on caching responses than that, you'll need to increase this
> setting via CacheConfig#setMaxObjectSizeBytes().
> 
> If your server(s) use the 'stale-while-revalidate' Cache-Control directive,
> then you may want to play with
> CacheConfig#setAsynchronousWorkerIdleLifetimeSecs(),
> CacheConfig#setAsynchronousWorkersCore(),
> CacheConfig#setAsynchronousWorkersMax(), and
> CacheConfig#setRevalidationQueueSize(), all of which basically control an
> underlying thread pool configuration to handle the background validation
> requests. These have "safe" defaults, so you may not need to tweak these
> until you get into performance tuning.
> 
> Finally, if your origin servers don't set proper Cache-Control headers but
> you want to cache the responses anyway, you may want to change
> CacheConfig#setHeuristicDefaultLifetime(). Another option for this is to
> write another decorator to modify Cache-Control headers on specific
> responses that come through, wired up between the CachingHttpClient and the
> "real" underlying HttpClient.
> 
> That said, if you just drop an unconfigured CachingHttpClient in, for say,
> an API client that gets relatively small, but cacheable responses, you
> should hopefully see some immediate benefit just from the in-memory cache.
> 
> Hope that helps,
> Jon
> 
> On Sat, Mar 17, 2012 at 10:21 AM, Robert Naczinski <
> robert.naczinski@googlemail.com> wrote:
> 
>> Hello,
>> 
>> I want my application use cache, as shown below
>> http://hc.apache.org/httpcomponents-client-ga/tutorial/html/caching.html.
>> 
>> Does anyone know the best settings or recommendations for the
>> configuration of the cache?
>> 
>> Regards,
>> 
>> Robert
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
>> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>> 
>> 

---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org


Mime
View raw message