Очистить кэш в определенное время в ASP.NET 2.0
Итак, у меня есть процесс, который запускается в полночь, который устанавливает начальную и конечную точку для flash-объекта. Это нужно запускать только один раз в день, поэтому я, очевидно, кэширую набор результатов.
Однако проблема, с которой я сталкиваюсь, заключается в том, что если данные все еще кэшируются после midnite, они не извлекают самые правильные данные, пока не истечет срок действия кэша.
Мне нужно, чтобы срок действия кэша истекал в 23:59:59, чтобы в 12:00 он получал правильные данные.
Я предполагаю, что зависимость SQL-кэша от таблицы, из которой я получаю данные, была бы идеальной, однако я никогда не настраивал ее раньше.
Есть ли способ сказать кешу удалить конкретный элемент точно в середине?
Спасибо, парни!
- Абсолютное истечение срока ---
Я думаю, я понял:
DateTime expireWeights = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59, 999);
Cache.Insert("CacheItemName", itemToCache, null, expireWeights, System.Web.Caching.Cache.NoSlidingExpiration);
3 ответа
Вы можете установить время absoluteExpiration для объекта Cache, который представляет собой DateTime.
Вы также можете комбинировать absoluteExpiration с SqlCacheDependency.
Что касается проблемы отсутствия новых данных при истечении срока действия кэша: вы можете подключить CacheItemRemovedCallback для получения уведомления о том, когда он истекает, и обновить кеш в это время.
Я не понимаю, почему у вас есть проблемы с абсолютным истечением? Вы можете указать точную дату и время истечения срока действия элемента из кэша. Поэтому следующая строка кода вставит "myObject" в кеш под ключом "MyKey" и истекает в полночь следующего дня (независимо от того, когда он входит в кеш).
Cache.Insert("MyKey", myObject, null, DateTime.Today.AddDays(1), TimeSpan.Zero);
Если вы посмотрите здесь, в разделе "Зависимость от времени", он показывает, как установить срок действия элемента в определенное время. Это то, что вы ищете?