On 13 Sep 2010, at 1:14 PM, Paul Fee wrote:
Retrieving bodies from the cache has a similar scalability issue. The
CACHE_OUT filter makes a single call to the provider's
recall_body(). The
entire body must be placed in a single brigade which is sent along the
filter chain with a single ap_pass_brigade() call.
This isn't a problem for the cache, as the cached content is passed as
a single FILE bucket.
When an upstream filter reads from the file bucket, the bucket
"morphs" into a RAM resident HEAP bucket, followed by a file bucket
representing the rest of the file. As long as a filter deletes each
(heap) bucket as it reads it, we don't have memory issues.
This is no different to the default handler serving a static file.
For special needs, an implementation can define it's own bucket types
which behave specially when read.
Regards,
Graham
--