2009-07-08 6 views
3

Je cherche une bonne explication de la raison pour laquelle on utiliserait l'expiration coulissante lors de la mise en cache de données dans une application Web. Il semble que vous souhaitiez toujours mettre en cache du contenu à l'aide d'une expiration absolue afin que les données soient forcées à être actualisées. Avec l'expiration coulissante, vous risquez que vos données soient mises en cache indéfiniment. Est-ce seulement utile pour mettre en cache des données statiques? Qu'est-ce qu'un scenerio commun pour quand l'expiration glissante est utile? Merci.En référence à ASP.NET Caching, quel est le but ou la raison de l'expiration glissante?

Répondre

1

Oui, les données peuvent être mises en cache indéfiniment - ce qui, comme vous le dites, n'a de sens que si elles sont statiques. Ceci est utile lorsque vous avez un élément de données coûteux (par exemple, prend beaucoup de temps pour calculer, récupérer, etc.) qui sera utile pour une durée indéterminée, mais la plupart des accès seront proches les uns des autres.

Un exemple fictif est que vous pouvez écrire une demande de temps d'impôt à utiliser par un cabinet comptable qui gère de nombreux clients d'entreprise. L'application doit retirer les détails de l'entreprise du service des impôts. Il est logique que toutes les actions pour une seule entreprise soient effectuées à peu près en même temps (par exemple générer des fiches de paie pour tous les employés), donc si vous téléchargez ces informations une fois et les mettez en cache avec une expiration glissante, elles resteront aussi longtemps Comme vous travaillez toujours avec cette entreprise, qui est une durée inconnue.

Bien sûr, les règles de mise en cache standard s'appliquent encore, si la mémoire est faible, les données mises en cache pourraient être effacées etc.

2

Certaines choses peuvent être mises en cache indéfiniment, mais seulement si vous avez assez de mémoire pour les conserver.

2

Si vous implémentez attentivement la mise à jour du cache, l'expiration de glissement est logique. Tant que vous utilisez constamment les données mises en cache, le système essaie de les garder en mémoire pour que vous puissiez les toucher (en réalité, la disponibilité n'est pas garantie même si elle n'est pas expirée, en fonction de la pression de la mémoire et d'autres facteurs). Donc, si vous prenez soin de l'invalider une fois que vous avez effectué une mise à jour, il n'y a pas de risque que vos données soient mises en cache indéfiniment. La mise en cache des données statiques n'a pas de sens, car il existe de nombreux scénarios dans lesquels vous pouvez mettre en cache de grandes quantités de données qui ne sont pas statiques. Je dirais que si entre les mises à jour d'un article vous pouvez statistiquement obtenir 3 demandes, cachez cet article et vous gagnerez en perf.

Questions connexes