> > I had an argument internally that caching was good, with the alternate > side saying that “cache invalidation” was hard so they never use it. >
I think it is "hard" but don't write it off completely. Search for "second level cache" and you'll see it's not that trivial to use properly. Some ORMs have it as an optional feature. You've got to consider what to cache, eviction or expiry policy, concurrency, capacity, etc. I implemented simple caching in a server app a long time ago, then about year later I put performance counters into the code and discovered that in live use the cache was usually going empty before it was accessed, so it was mostly ineffective. Luckily I could tweak it into working. So caching is great, but be careful -- *GK*