I am interested in using the ASP.NET Cache to decrease load times. How do I go about this? Where do I start? And how exactly does caching work?
As applications grow it is quite normal to leverage caching as a way to gain scalability and keep consistent server response times. Caching works by storing data in memory to drastically decrease access times. To get started I would look at ASP.NET caching.
There are 3 types of general Caching techniques in ASP.NET web apps:
- Page Output Caching(Page Level)
- Page Partial-Page Output(Specific Elements of the page)
- Programmatic or Data Caching
Output Caching
Page level output caching caches the html of a page so that each time ASP.NET page requested it checks the output cache first. You can vary these requests by input parameters(VaryByParam) so the the page will only be cached for users where ID=1 if a requests come in where ID=2 asp.net cache is smart enough to know it needs to re-render the page.
Partial-Page Caching
a lot of times it wont make sense to cache the entire page in these circumstances you can use partial Page caching. This is usually used with user controls and is set the same way as page level only adding the OutputCache declarative inside the usercontrol.
Data Caching
You can store objects or values that are commonly used throughout the application. It can be as easy to as:
Cache["myobject"] = person;
Enterprise Level Caching
It is worth mention that there are many Enterprise level caching architectures that have come about to leverage the effectiveness caching. Memcache for .net and Velocity are a couple.
In General
You can't really make blanket statements on what you should and shouldn't cache because every application is different. However, you can make a few generalizations that hold true MOST of time. Static elements like images and content are OK to cache. Even a dynamic page that is getting hammered is worth caching for 5-10 seconds, it will make a world of difference to your web server.
Your best bet might be to check out a couple of the caching videos on www.asp.net/learn/videos, specifically: How Do I Make Use of Caching? and How do I Make Greater use of Caching ?
I always find them helpful.
Take a look at http://www.dnrtv.com/default.aspx?showNum=85 it's a really good video tutorial on how to do caching
I think the stack over flow pod cast also talks about it
To begin ASP.NET caching here is a good tutorial ASP.NET Quickstart Tutorial for Caching. Output Caching and Fragment Caching is good for understanding concept.
And here is a helpful library from Microsoft's Patterns and Practices team's the Caching Application Block for caching programmatically in .NET applications.