> > What still needs to be done to mod_cache.c:
> > 
> > The abstraction needs to be put in so that multiple cache back-ends can be
> > used.  This requires abstracting out:
> > 
> >         get_cache_location
> >         cache_read
> >         cache_write
> >         cache_open
> 
> Multiple backends I assume means a shared memory backend, a disk
> backend, etc?

Yep.

> > Cache entries should be stored in a hash table that uses the key values:
> > 
> >         hostname:port/URI
> > 
> > The handler just checks the hash and sends the file if it is there.
> 
> What I want to do is build in content negotiation into that as well. In
> other words, you provide hostname:port/URI *and* the request headers,
> and based on both you get a response back. This will allow you to cache
> both an English and French representation of the same URL, or a
> compressed and non-compressed representation of an URL at the same time.

Interesting.  I need to think about that more, because it changes the hash
structure I had thought about last night, but it should be VERY cool.

> > Once the handler is written and the filter can get the correct location to
> > save the cached data, this module is done.
> 
> This effectively represents the caching filter part of the design I
> proposed. What is needed now is a content-generator entity that
> optionally returns cached data if it exists, or DECLINED if not.

The filter is an actual filter, which is what I have at least
started.  The content generator is the handler.  I have a design for it,
but no time to actually write it.  I think we could have a working cache
in under a week of somebody takes what I posted yesterday, and just works
on it for a day or two.

Ryan
_______________________________________________________________________________
Ryan Bloom                              [EMAIL PROTECTED]
406 29th St.
San Francisco, CA 94131
-------------------------------------------------------------------------------

Reply via email to