Predictive Caching
We tested CacheOS version 2.2.03, which caches HTTP 1.0 and 1.1, FTP in
proxy mode, cookies, and SSL tunnels. CacheFlow is developing a native
solution to support streaming media proxying, chaining, and caching for
RealNetworks, Microsoft Windows Media Technologies, and Apple QuickTime4.
CacheOS embedded support will be included in the next major software release
(3.0), available by the end of this quarter. CacheFlow does not see much
demand for news caching.
Other caches we've tested have been largely passive: they retrieve content
at browser request, augmented by scheduled download of sites deemed popular
by the administrator. Scheduled downloads are notably absent from the
CacheFlow because they are irrelevant. The CacheOS attempts to
identify and pre-fetch popular content so that it will be fresh when the
next request arrives. An "adaptive refresh algorithm" monitors the frequency
of change and use for each stored object; it predicts when the object
will become stale and proactively refreshes the object before the next
hit is likely.
Parameters control maximum
HTTP and FTP object size and how long FTP files are retained, but
absent are the max / min TTL parameters found in other products. Instead,
we find a Freshness panel (right). The CacheOS will try to
keep objects 97.5 percent fresh by default. Setting this parameter
to 100 causes the CacheFlow to check the origin server on every request,
while lower values determine how aggressively prefetch works to maintain
freshness.
Because popularity influences the algorithm, the CacheFlow should not
waste bandwidth refreshing objects that go unused. However, in situations
where bandwidth is tight, a parameter can be used to limit refresh traffic,
measured in Kbps.
Adaptive refresh jumped to our attention right away: at first, our CacheFlow
didn't store objects generated by Polygraph. CacheFlow re-fetched objects
without TTL or Last-Modified tags to determine update frequency, and Polygraph's
random content made these objects appear changed every time. The CacheOS
decided these ever-changing objects were not useful to store. Since we
wanted to vend stored objects, we added TTL to our Polygraph workload.
It wasn't intentional, but this test clearly demonstrated how adaptive
refresh works to ensure delivery of fresh objects.