另附：WebCache Class https://msdn.microsoft.com/en-us/library/system.web.helpers.webcache(v=vs.111).aspx
This article is not about caching the output of APIControllers.
Often in ASP.NET Web API you will have a need to cache something temporarily in memory probably to improve performance.
There are several nice libraries that allow you to do just that.
One very popular is CacheCow and here you will find a very nice article how to use this library.
But what if you want to do caching without third party library in a very simple way?
If you want to learn more about ASP.NET Web API I recommend a great book that I love written by real experts:
Designing Evolvable Web APIs with ASP.NET
Caching without third party library in a very simple way
I had a need for this. I implemented some basic authentication for the ASP.NET Web API with Tokens and wanted to cache Tokens temporarily in memory to avoid going into the database for every HTTP request.
The solution is very simple.
You just need to use Microsoft class for this called MemoryCache which resides inSystem.Runtime.Caching dll.
I created a simple helper class for caching with few lines of code:
When you want to cache something:
And to get something from the cache:
NOTE: You should be aware that MemoryCache will be disposed every time IIS do app pool recycle.
If your Web API :
- Does not receive any request for more that 20 minutes
- Or hit default IIS pool interval 1740 minutes
- Or you copy a new version of your ASP.NET Web API project into an IIS folder (this will auto-trigger app pool recycle)
So you should have a workaround for this. If you don’t get value from the cache you should grab it for example from a database and then store it again in the cache: