I presented a talk at the Wellington and Auckland .NET user groups this month titled "Best Practices - Caching". The goal of the talk was to discuss why we might need to add caching to our applications, and the way that we typically add it to each layer:
The difficult part when caching at any layer is invalidating the redundant data that is stored in the cache when the source data changes. It's easier depending on the type of the data:
The second half of the talk we looked at two caching technologies - memcached and Velocity.
The presentation: Caching.pdf
Some links:
Kirk
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.