Я использую System.Runtime.Caching MemoryCache в своем приложении MVC3 для кэширования редко изменяемых, но часто используемых данных.Я установил абсолютное выдох 30 минут.Это прекрасно работает.Каждые 30 минут приложение истекает данные в кеше, а затем удаляет данные.
При следующем запросе данных система перезагружает кэш из базы данных.
Однако, что если база данных была временно недоступна после удаления кэша?Это приведет к тому, что записи из MemoryCache или базы данных не будут доступны.Было бы идеально, чтобы истечь срок действия кэша, но НЕ выселять данные, пока я не буду уверен, что смогу перезагрузить его.Если я не могу перезагрузить данные из базы данных, я бы хотел продлить срок действия кэша, скажем, примерно на 5 минут и повторить попытку.В конце концов база данных вернется.
Стратегия заключается в том, что я предпочел бы иметь немного устаревшие данные, а не вообще никаких данных.
Мой вопрос заключается в том, как мне создать такую стратегию кэширования с использованием System.Runtime.Caching.Я не вижу события, которое позволило бы мне предотвратить выселение во время истечения срока действия.Есть идеи?