Рекомендуется использовать System.Web.Caching или System.Runtime.Caching для веб-приложения .NET 4
Я добавляю кеширование в веб-приложение ASP.NET. Это .NET 4, поэтому я могу использовать классы в пространстве имен System.Runtime.Caching(которое, как я понимаю, было добавлено для обеспечения аналогичной функциональности, доступной в System.Web.Caching, но для не-Web- приложения.)
Но так как это веб-приложение, мне лучше использовать System.Web.Caching? Или новичок System.Runtime.Caching превосходит в некотором роде?
Ответы
Ответ 1
Корпорация Майкрософт рекомендует использовать System.Runtime.Caching для всех целей кэширования. Смотрите это: http://msdn.microsoft.com/en-us/library/dd997357.aspx
Хотя, я столкнулся с несколькими темами, где у людей возникают проблемы с экземпляром MemoryCache.Default. Через некоторое время он перестает нормально работать. Любой элемент, добавляемый с помощью метода "Добавить" или "Установить", фактически не добавляется в кэш. Я попробовал то же самое и смог воспроизвести эту проблему с явным вызовом метода MemoryCache.Default.Dispose().
Вот ссылки:
MemoryCache Empty: возвращает null после установки
http://forums.asp.net/t/1736572.aspx/1
Моя рекомендация - использовать System.Web.Caching(HttpContext.Current.Cache)
UPDATE:
Эта проблема была исправлена MS. Проверьте принятый ответ в сообщении ниже:
Проблема с кэшем времени выполнения исправлена
Ответ 2
System.Runtime.Caching позволяет кэшировать все приложения .NET, а не только рабочий процесс IIS. Поэтому, если у вас есть требование, которое будет обращаться к кешу в нескольких сценариях, используйте System.Runtime. Также вы можете проверить этот кэш-адаптер, который позволяет вам переключаться между кешем выполнения, кэшем веб-приложений и веб-приложений. https://bitbucket.org/glav/cacheadapter
Еще одна вещь, если у вас многосерверная ферма, с балансировкой нагрузки, убедитесь, что у вас есть липкие сессии или модель распределенного кэша.