C# – Is System.Web.Caching or System.Runtime.Caching preferable for a .NET 4 web application

.net-4.0asp.netccaching

I am adding caching to an ASP.NET web application. This is .NET 4, so I can use the classes in the System.Runtime.Caching namespace (which, as I understand it, was added to provide similar functionality to that found in System.Web.Caching, but for non-Web-apps.)

But since this is a web app, am I better off using System.Web.Caching? Or is the newer System.Runtime.Caching superior in some way?

Best Answer

Microsoft recommends using System.Runtime.Caching for all caching purposes. See this: http://msdn.microsoft.com/en-us/library/dd997357.aspx

Although, I have come across a couple threads where people are having issues with the MemoryCache.Default instance. After a while, it stops working properly. Any item you add using the Add or Set method does not actually get added to the cache. I tried the same and was able to reproduce this issue with explicitly calling MemoryCache.Default.Dispose() method.

Here are the links: MemoryCache Empty : Returns null after being set

http://forums.asp.net/t/1736572.aspx/1

My recommendation is to use the System.Web.Caching (HttpContext.Current.Cache)

UPDATE:

This issue has been fixed by MS. Check the accepted answer in the post below: Runtime Cache Issue Resolved