On 13 Sep 2010, at 4:18 PM, Plüm, Rüdiger, VF-Group wrote:

It is not a problem for mod_disk_cache as you say, but
I guess he meant for 3rd party providers that could only deliver
the cached responses via heap buckets.

The cache provider itself puts the bucket in the brigade, and has the power to put any bucket into the brigade it likes, including it's own custom developed buckets. The fact that brigades become heap buckets when read is a property of our bucket brigades, they aren't a restriction applied by the cache.

For example, in the large disk cache patch, a special bucket was invented that represented a file that was not be completely present, and that blocked waiting for more data if the in-flight cache file was not yet all there. There was no need to change the API to support this scenario, the cache just dropped the special bucket into the brigade and it was done.

And unlike an handler in the same situation the cache providers
recall_body cannot run multiple passes through the outputfilter chain
with multiple smaller brigades.

In theory we could teach the cache to keep calling the recall_body() function until recall_body() returned an EOS bucket, but by supporting this we're going against the traditional way that bucket brigades work.

Regards,
Graham
--

Reply via email to