[Catalyst] clear() method for Catalyst::Plugin::Cache?
Jason Kohles
email at jasonkohles.com
Sat Mar 7 01:11:34 GMT 2009
On Mar 6, 2009, at 7:42 PM, Larry Leszczynski wrote:
> Does it make sense to add a clear() method to Catalyst::Plugin::Cache,
> in addition to the existing get(), set() and remove()? It seems
> like a
> common action for cache manipulation.
>
> Any of the various Cache::Cache-based backend flavors should be able
> to
> support it out of the box. For specific backends that use a different
> method name to accomplish clearing the cache (e.g.
> Cache::Memcached::libmemcached::flush_all), would need to come up
> with a
> way to map method names - maybe a config option?:
>
> __PACKAGE__->config->{'Plugin::Cache'}{backend} = {
> class => "Cache::Memcached::libmemcached",
> method_map => {
> clear => 'flush_all',
> },
> servers => ['127.0.0.1:11211'],
> debug => 2,
> };
>
I think this code is a great example of why this is a bad idea as a
general practice. If the only thing you are using memcached for is
session cache, then mapping clear to flush_all has the desired effect,
but if you are using memcached for more than just session caches, then
flush_all could be a very bad idea.
And if you are using memcached for just session cache, then adding
your own code to call flush_all when you want to clear it isn't that
big a deal. Personally I can't recall ever running into a situation
where I had a reason to dump the entire session cache.
--
Jason Kohles, RHCA RHCDS RHCE
email at jasonkohles.com - http://www.jasonkohles.com/
"A witty saying proves nothing." -- Voltaire
More information about the Catalyst
mailing list