J'ai une application ASP.NET qui nécessite une mise en cache de sortie. J'ai besoin d'invalider les éléments mis en cache lorsque les données retournées par un service web changent, donc une simple durée n'est pas assez bonne.Mise en cache de sortie ASP.NET - mise à jour dynamique des dépendances
J'ai fait un peu de lecture sur les dépendances de cache et pense que j'ai la bonne idée. Il semblerait que je devrais créer une dépendance de cache à mon service Web.
Pour associer la sortie avec cette dépendance, je pense que je devrais utiliser la méthode suivante:
Response.AddCacheItemDependency (cacheKey);
La chose avec laquelle je me bats est ce que je devrais ajouter au cache?
La dépendance de ma page correspond à une seule valeur renvoyée par le service Web. Ma pensée actuelle est que je devrais créer une dépendance de cache personnalisée en sous-classant CacheDependency, et stocker la valeur actuelle dans le cache. Je peux ensuite utiliser Response.AddCacheItemDependency pour former la dépendance.
Je peux ensuite vérifier périodiquement la valeur et un NotifyDependencyChange afin d'invalider ma réponse HTTP mise en cache. Le problème est, je dois m'assurer que le cache est vidé immédiatement, ainsi une vérification périodique n'est pas assez bonne. Comment puis-je m'assurer que mon objet dépendant dans le cache qui représente la valeur renvoyée par le service Web est réévalué avant que la réponse HTTP ne soit extraite du cache?
Cordialement, Colin E.
Salut Ray, merci pour votre réponse. L'appel de service Web est peu coûteux et c'est quelque chose que je peux faire chaque fois qu'une page est demandée. Ce que je dois savoir, c'est où dans mon application ASP je devrais faire cette vérification, il devrait se produire avant que le serveur détermine si retourner une réponse en cache. – ColinE
Eh bien, vous pourriez le faire à chaque demande de page, mais cela semble inutile si vous avez un site occupé. Si l'appel est si peu coûteux, pourriez-vous vivre avec une période très courte (quelques secondes) entre les tests de cache? Ou est-il absolument essentiel que les données ne soient pas tellement dépassées d'une seconde? (Bien sûr, les données seront périmées à un moment donné car elles sont affichées sur l'écran de l'utilisateur en attente d'être lues.) – Ray