ASP.net Создать объекты с самостоятельным повторным кэшированием?

Как я могу заставить кэшированный объект повторно кэшировать себя с обновленной информацией, когда срок действия кеша истек? Я пытаюсь помешать следующему пользователю, который запрашивает кеш, иметь дело с получением данных, устанавливающих кеш, а затем использовать его, есть ли какой-либо фоновый метод/событие, к которому я могу привязать объект, чтобы по истечении срока его действия он просто вызывал метод он сам и сам кэширует.


person BlackTea    schedule 30.03.2010    source источник


Ответы (2)


Вы можете использовать обратный вызов из кэша

System.Web.Caching.CacheItemRemovedCallback callback = 
    new System.Web.Caching.CacheItemRemovedCallback (OnRemove);
Cache.Insert("key",myFile,null, 
   System.Web.Caching.Cache.NoAbsoluteExpiration, 
   TimeSpan.Zero, 
   System.Web.Caching.CacheItemPriority.Default, callback);
 . . .
public static void OnRemove(string key, 
   object cacheItem, 
   System.Web.Caching.CacheItemRemovedReason reason)
   {
      // Logic
   }
person vittore    schedule 30.03.2010
comment
Проблема, с которой я столкнулся сейчас с этой реализацией, заключается в том, что ее указание HttpContext.Current.Cache недоступно. - person BlackTea; 30.03.2010
comment
попробуйте использовать HttpContext.Current != null ? HttpContext.Current.Cache : HttpRuntime.Cache; - person vittore; 31.03.2010

Прошу прощения, может я что-то упускаю. Но похоже, что вам нужно постоянно обновлять кэшированные данные. ИМО, в этом случае лучше использовать CacheDependency вместо истечения срока действия. Конечно, вы должны повторно кэшировать его при следующем запросе.

person Mehdi Golchin    schedule 30.03.2010
comment
Идея состоит в том, чтобы повторно кэшировать каждый xmin без поступления следующего запроса и вручную запускать повторное кэширование. - person BlackTea; 30.03.2010