Срок действия кэша .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
             );

Ответы на вопрос(1)

Ваш ответ на вопрос