There are other reasons why you might not want to cache something. Quite a few 
of them, even without trying to be too creative.

For example: memory use. Why cache things like contact mech or order 
information that isn't likely to be read a very many times, but if cached would 
take up memory until expired and cleared (and would only be cleared if 
something is cleaning up expired entries) or until it makes it to the end of 
the LRU queue or whatever, and the whole time requiring additional resources to 
keep track of and making more legitimate caching less efficient.

Another example: freshness. If you want to be sure the data is good, get it 
from the db. If it won't cause big problems to have stale data, then the cache 
is okay.

Am I the only one who things caching everything by default (as Marc suggested) 
or popping out warning messages (as Adam suggests here) is a little crazy? I 
haven't seen anyone else speak up, so just wondering...

-David


On Dec 5, 2010, at 7:45 PM, Adam Heath wrote:

> I've noticed several places in the code that issue a findOne(or other
> find method), without using a cache, but then don't do any
> modifications to the returned value.  Such call sites should really
> use a caching variant of the delegator.
> 
> What I'd like to work on, is a feature, only used during development,
> that would record any value looked up that wasn't cached, and wasn't
> later modified, and print a warning, with an exception, to allow for a
> caching variant to be added.  Would others find this useful?
> 
> Obviously, it would need to be transaction based, and would sometimes
> have false-positives.  Additionally, if no transaction is active, then
> that automatically means a caching variant should be used.

Reply via email to