2012-06-18 4 views
1

У меня есть приложение ASP.NET MVC 3, размещенное на IIS. Это приложение использует MemoryCache для работы с некоторыми данными в памяти, чтобы минимизировать попадание в мою базу данных. Я бы хотел, чтобы эти данные сохранялись в кэше до одного дня. В моем коде я устанавливаю следующее:ASP.NET MVC 3 Cache Duration

List<MyObject> myItems = GetMyItems(); 
CacheItemPolicy cachePolicy = new CacheItemPolicy(); 
cachePolicy.AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddMinutes(1440)); 
Cache.Set("myCacheKey", myItems, cachePolicy); 

Пока мое кэширование работает. Тем не менее, он, похоже, не остается в кеше для предполагаемой продолжительности. Есть ли параметр, который мне нужно сделать в web.config, если да, то какая настройка? Если нет, то это параметр IIS, который мне нужно настроить для обеспечения большей продолжительности кеша?

ответ

1

Проблема, скорее всего, заключается в том, что ваш бассейн приложения перерабатывается после периодов неиспользования. Когда пулы приложений перерабатываются, все, что у вас было в памяти, теряется.

Если вам нужен более прочный кеш, вам нужно будет переключиться на то, что не размещено в процессе. Существует ряд коммерческих и открытых источников кеширования; Я бы порекомендовал пойти с одним из них.

Вот лишь несколько решений кэша:

  1. SharedCache
  2. AppFabric
  3. NCache
  4. MemCached.NET

Среди других.