Как я могу заставить кэшированный объект повторно кэшировать себя с обновленной информацией, когда срок действия кеша истек? Я пытаюсь помешать следующему пользователю, который запрашивает кеш, иметь дело с получением данных, устанавливающих кеш, а затем использовать его, есть ли какой-либо фоновый метод/событие, к которому я могу привязать объект, чтобы по истечении срока его действия он просто вызывал метод он сам и сам кэширует.
ASP.net Создать объекты с самостоятельным повторным кэшированием?
Ответы (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
Проблема, с которой я столкнулся сейчас с этой реализацией, заключается в том, что ее указание HttpContext.Current.Cache недоступно.
- person BlackTea; 30.03.2010
попробуйте использовать
HttpContext.Current != null ? HttpContext.Current.Cache : HttpRuntime.Cache;
- person vittore; 31.03.2010
Прошу прощения, может я что-то упускаю. Но похоже, что вам нужно постоянно обновлять кэшированные данные. ИМО, в этом случае лучше использовать CacheDependency
вместо истечения срока действия. Конечно, вы должны повторно кэшировать его при следующем запросе.
person
Mehdi Golchin
schedule
30.03.2010
Идея состоит в том, чтобы повторно кэшировать каждый xmin без поступления следующего запроса и вручную запускать повторное кэширование.
- person BlackTea; 30.03.2010