Подтвердить что ты не робот

Рекомендуется использовать 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 превосходит в некотором роде?

4b9b3361

Ответ 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

Еще одна вещь, если у вас многосерверная ферма, с балансировкой нагрузки, убедитесь, что у вас есть липкие сессии или модель распределенного кэша.