Any strategies for populating caches (in addition to user hits)?
caches should be populated with objects that future users are probably going
to want to fetch. usually caches use past popularity as an indicator of
future popularity, where "past popularity" is some combination of the recency
of the last fetch, the number of times it has been fetched, and the number of
different users (if indeed you can tell them apart, client IP address is not
as useful as we thought) who did the fetching.
folks who have preloaded caches with data that they _thought_ was going to be
popular, or which actually was popular _last_week_ when they made the tape,
have lost horribly.
the thing you need is knowledge about what objects are popular among your own
and similar user communities. that's what multilevel caching does for you:
if you have a secondary cache of some kind and all cache misses from a
moderate to large number of primary caches get pulled through or by the
secondary cache, then the chance of a future primary cache miss being turned
into a secondary cache hit goes up by a lot.
multilevel caching also has the benefit of keeping N primary caches in the
same region from all having to go fetch from an origin server. and the
secondary caches usually have more disk space on them. but the big advantage
is sharing of object interest factor among a lot of different primary caches.