Caching in the ASP.NET MVC Framework

I am fairly new at using the ASP.NET MVC framework and was hoping that I could find some help about best-practises when caching various parts of my MVC web application. I know that stack overflow uses MVC and some pretty freeking awesome caching techniques, and its MILES faster than my app, even when running locally.

I have a few questions.

  1. How does the caching actually work, and how do you "enable" it, and what are the various options. What is the best kind of caching to use?

  2. My app has a lot of database transactions, lists that regularly change. I am worried about the timliness of page refreshes, in users not getting the most recent version of the data. Whats the best way to strike a balance between web application speed and displaying "up-to-date" data? What best practises have you guys found when having to deal with this issue?

  3. How do I cache different parts (I assume views) with different caching settings? I assume that it could be done with sub-controllers, but I have NFI how to go about doing this.

  4. I am using the Castle.Windor integration to the controllers, I am not sure if this changes anything.

  5. Any other best practises of notes of things to be wary/careful of would be greatly appreciated.

Answers


You might want to take a look at Phil Haack post for some donut caching. He's THE reference for ASP.NET MVC :)


From a "best practices" perspective, you will need to consider the same things you must consider in any application that uses caching.

  • Is the traffic volume high enough to benefit from caching?
  • How often does a particular piece of data change? How crucial is timeliness?
  • Do I own the data-access layer? If so, can I trigger the refresh in the cache by the actual changing of the data and avoid a time-based expiration?

and the list goes on.


You can easily cache views using the OutputCache attribute. Any not frequently updated lists I cache as well using nHibernate caching mechanisms.


Need Your Help

How to stop a function through another one in AS3?

flash function actionscript

So, i'm in this Flash CS5 file and i want to disable a function when another is running. To be more precise: i'm doing a function that makes me control a game character through keyboards. When this

merge parent and child attributes using xslt based on attribute values

xml xslt merge xslt-1.0 xslt-2.0

I have an xml file which contains the following markup, I know the format of this file is not correct but that's how the file is.

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.