Expiration du cache .Net

Dans mon projet, nous utilisons des services Web pour obtenir des données de la firebase database et les renseigner en mémoire cache. J’utilise l’expiration absolue et la durée est fixée à 4 heures. Ainsi, au bout de 4 heures, le cache expire et le service Web est donc appelé pour remplir à nouveau les données dans le cache.

Le problème qui se pose maintenant est le suivant:

Il est parfois difficile d’établir une connexion entre les services Web et la firebase database. Par conséquent, les services Web ne renvoient pas de données.

Dans ce cas, le cache est rempli avec des valeurs NULL pour tous les champs et jusqu’à 4 heures (jusqu’à l’expiration de son délai), il n’est pas rempli à nouveau.

Je recherche 2 types de solutions: 1) nous pourrions renouveler le cache avant son expiration, puis appeler le service Web. Si le service Web récupère les données, écrasez le cache. 2) le cache n’expire jamais et de temps en temps nous générons un thread qui le met à jour si nous récupérons des données.

Mais je ne suis pas sûr de savoir comment mettre en œuvre les solutions ci-dessus? Quelqu’un peut-il me donner un aperçu de la partie technique? Merci pour l’aide!

Mon code actuel de remplissage de cache:

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 ); 

Au lieu de passer null, implémentez CacheItemRemovedCallback comme dernier paramètre de Cache.Insert (..) . Lors de la récupération de la valeur pour repeupler le cache, vous pouvez effectuer une vérification null et utiliser l’ancienne valeur pour le moment.