Вопрос

Итак, у меня есть процесс, который запускается в полночь и устанавливает начальную и конечную точку для флэш-объекта.Это нужно запускать только один раз в день, поэтому я, очевидно, кэширую набор результатов.

Однако проблема, с которой я сталкиваюсь, заключается в том, что если данные все еще кэшируются после полуночи, они не извлекают наиболее правильные данные до тех пор, пока не истечет срок действия кеша.

По сути, мне нужно, чтобы срок действия кеша истекал в 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);
Это было полезно?

Решение

Вы можете установить абсолютное время истечения срока действия для объекта Cache, который является DateTime.

Вы также можете объединить AbsoluteExpiration с SqlCacheDependency.

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

Другие советы

Я не понимаю, почему у вас проблема с абсолютным сроком действия?Вы можете указать точную дату и время, когда элемент истечет из кеша.Таким образом, следующая строка кода вставит «myObject» в кеш под ключом «MyKey», срок действия которого истечет в полночь следующего дня (независимо от того, когда он попадет в кеш).

Cache.Insert("MyKey", myObject, null, DateTime.Today.AddDays(1), TimeSpan.Zero);

Если ты посмотришь здесь, в разделе «Зависимость по времени» показано, как установить срок действия элемента в определенное время.Это то, что вы ищете?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top