Срок действия кэша .Net
В моем проекте мы используем веб-сервисы для получения данных из БД и заполнения данных из веб-сервисов для кэширования. Я использую Абсолютный срок действия, а продолжительность установлена на 4 часа. Таким образом, через 4 часа срок действия кэша истекает, и поэтому вызывается веб-служба для повторного заполнения данных в кэше.
Проблема, возникающая сейчас:
Иногда возникает проблема установления соединения между веб-сервисами и базой данных, и поэтому веб-сервисы не возвращают данные.
В этом случае кеш заполняется нулевыми значениями для всех полей, и кеш до 4 часов (до момента его истечения) снова не заполняется.
Я ищу 2 типа решений: 1) мы можем обновить кеш до его истечения, а затем вызвать веб-сервис. Если веб-сервис возвращает данные, перезапишите кеш. 2) срок действия кэша никогда не истекает, и каждый раз мы порождаем поток, который обновляет кэш, если мы получаем данные обратно.
Но я не уверен, как реализовать вышеуказанные решения? Может кто-нибудь дать мне понимание технической части? Спасибо за помощь!
Мой текущий код заполнения кеша:
ctx.Cache.Insert("cachename", cacheValue, null,
DateTime.Now.AddHours(Int32.Parse(siteViewModel.ApplicationSettings["CacheDurationHours"])), System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.Default,
null
);