I’m working on an ASP.NET MVC project and I’ve come to the point where I want to start considering my caching strategy. I’ve tried to leave my framework as open as possible for the use in caching.
From what I heard during Scott Hanselman’s podcast StackOverflow.com uses page output caching and zips that content and puts it into RAM. This sounds like this would be great for user-wide cache but for something like personalized pages you would have to cache a version for each user and that could get out of control very quickly.
So, for a caching strategy. Which should be used, Output Caching, Data Caching or combined? My first thoughts are both but as far as cache dependencies it sounds like it could get a bit complex.
Be careful about over-aggressive caching. Although caching is a tool for helping performance, when used incorrectly, it can actually make performance worse.
I can’t answer whether output caching or data caching would work for you better without knowing more details about your project. I can help provide a couple examples of when to use one over another.
If you have a specific data set which you would use often in many different views, you’d be better off using data caching. You’d use this if your data fetch operation was very common and expensive relative to your data rendering. If you had multiple views which used the same data, you would save your data fetching time.
If you had a view which used a very specific data set and the rendering of the view was complicated and this view was requested very often (for example, stack overflow’s home page), then you would benefit a lot from output caching.
So in the end, it really depends on your needs and be careful about using caching incorrectly.