On Jun 19, 2006, at 12:45 PM, Graham TerMarsch wrote:
On Sunday 18 June 2006 4:22 pm, Jason A. Crome wrote:
Please see the attached RFC. I know a caching plugin has been
discussed in the past, but recent needs at work (and recent
conversations with Cees) have motivated me to produce this. When you
have an opportunity, please read and give me your feedback.
Oh, this sounds nice. :)) I'm regularly having to deal with needs
to caches
in various parts of our applications, but having something
integrate directly
with C-A would be -sweet-.
Thank you :)
One thing I have considered adding but have not done so yet is cache
rollover. To explain this a bit... If you look for a parameter in
an unspecified cache, and the parameter doesn't exist there, you
search all caches for a match on that parameter. Which begs the
question, what should a set operation do? Set in one cache or all
caches? What are your thoughts on this?
I'd written a first response here under the guise of "get should
query all,
set should just set into a single cache", but after further thought
think
that its just not consistent that way.
What about "find()" instead of "get()"? It'd be syntactically more
obvious to
the reader that "find()" is going to do a search across multiple
caches,
while "get()" is just going to explicitly go get the results from a
single
cache. I'd envision "find()" just doing an iteration across all
registered
caches until the specified value was found.
Sometimes, the most obvious things just sit there right in front of
me and I never see them. I love this suggestion :) I've been
fighting with this piece of the interface for days.
Only gotcha I can think of here is how does one set which caches to
search and
in what order? E.g. what if I want my "memory" cache to be checked
before my
"disk" cache? what if I'm only concerned about results from my
"memory" and
"memcached" caches and don't care about the "disk" cache right now?
Perhaps something like:
# create separate "memory", "disk", and "memcached" caches
$self->cache('memory')->config( ... );
$self->cache('disk')->config( ... );
$self->cache('memcached')->config( ... );
# find a cached item in -ANY- registered cache
$self->cache->find( $key );
# find a cached item in a specific set of caches
$self->cache(['memory','memcached'])->find( $key );
???
Heck.... at that point why not just do...
$self->cache(['memory','memcached'])->get( $key );
as its pretty obvious that we're doing a "get()" across an explicit
set of
caches. Maybe:
$self->cache('*')->get( $key );
to query against "all known caches, in no guaranteed order"?
Again, great suggestions. I had long been struggling for a way to
specify what caches should be searched at config() time. You could
also expand this logic to set for which caches to set a value in. get
() could become a bit hairy though.
Thanks for the feedback. This is great stuff :)
Jason
--
Graham TerMarsch
Howling Frog Internet Development, Inc.
---------------------------------------------------------------------
Web Archive: http://www.mail-archive.com/[email protected]/
http://marc.theaimsgroup.com/?l=cgiapp&r=1&w=2
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
Web Archive: http://www.mail-archive.com/[email protected]/
http://marc.theaimsgroup.com/?l=cgiapp&r=1&w=2
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]