System.Runtime.Caching L'expiration absolue expulse des données telles que conçues, mais comment mettre en œuvre une stratégie de données expirant sans expulser?

StackOverflow https://stackoverflow.com/questions/9476775

Question

J'utilise le système.Runtime.Caching MemoryCache dans mon application MVC3 au cache rarement changé, mais souvent accessible aux données. J'ai défini une absoluexpiration de 30 minutes. Cela fonctionne bien. Toutes les 30 minutes, l'application expire les données dans le cache, puis expulse les données.

La prochaine fois que les données sont interrogées, le système recharge le cache de la base de données.

Cependant, si la base de données était temporairement indisponible une fois que le cache est expulsé? Cela n'entraînerait qu'aucun enregistrement disponible, ni à partir de la mémoire MemoryCache ou de la base de données. Il serait idéal d'expirer le cache, mais ne pas expulser les données jusqu'à ce que je puisse être sûr de pouvoir le recharger. Si je ne suis pas en mesure de recentrer les données de la base de données, je voudrais prolonger l'expiration du cache en disant ... 5 minutes environ et devez-la essayer à nouveau. Finalement, la base de données reviendra.

La stratégie étant que je préférerais avoir des données légèrement étalées qu'aucune donnée du tout.

Ma question est de savoir comment devrais-je créer une stratégie de mise en cache à l'aide de System.Runtime.caching. Je ne vois pas d'événement qui me permet d'éviter d'expulsion au moment de l'expiration. Des idées?

Était-ce utile?

La solution

Je pense que vous devez implémenter votre propre sortieCacheProvider, qui vous permettra de contrôler exactement ce qui se passe quand il est temps de supprimer l'élément du cache:

http://msdn.microsoft.com/fr-US / bibliothèque / system.web.caching.outputcacheprovider.aspx

Vous pouvez également envisager les stratégies changeantes et regarder la SQLCaCachePendance, que je ne crois pas invaliderait l'élément mis en cache si la base de données est indisponible.

http://msdn.microsoft.com/fr-US / Bibliothèque / system.web.caching.sqlcachedependency.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top