2012-02-28 2 views
0

私はMVC3アプリケーションでSystem.Runtime.Caching MemoryCacheを使用してキャッシュを変更することはほとんどありませんが、頻繁にデータにアクセスします。私はabsoluteExpirationを30分に設定しました。これは素晴らしいです。 30分ごとに、アプリケーションはキャッシュ内のデータを期限切れにしてからデータを削除します。System.Runtime.Caching Absolute Expirationはデータを設計通りに削除しますが、非エンプティな有効期限切れのデータ戦略を実装する方法はありますか?

次回データが照会されると、システムはデータベースからキャッシュをリロードします。

しかし、キャッシュを追い出した後にデータベースを一時的に使用できない場合はどうなりますか?これにより、MemoryCacheまたはデータベースのいずれのレコードも使用できなくなります。キャッシュを期限切れにするのが理想的ですが、データを再ロードできると確信するまでデータを退避しないでください。データベースからデータをリロードできない場合は、キャッシュの有効期限を5分程度に延長してもう一度試してみたいと思います。最終的にデータベースが戻ってきます。

私はむしろ、全くデータより少し古いデータを持っているという戦略です。

私の質問は、System.Runtime.Cachingを使用してこのようなキャッシュ戦略を作成する方法についてです。私は、満了時に退去を防ぐことを可能にする出来事は見ません。何か案は?

答えて

0

私はあなたはそれがキャッシュから項目を削除する時が来たときの動作を正確に制御できるようになること、あなたがあなた自身のOutputCacheProviderを実装する必要があると思う:

http://msdn.microsoft.com/en-us/library/system.web.caching.outputcacheprovider.aspx

ます。また、変更の戦略を検討する可能性があり、 SqlCacheDependencyを見ると、データベースが利用できない場合、キャッシュされたアイテムが無効になるとは思われません。

http://msdn.microsoft.com/en-us/library/system.web.caching.sqlcachedependency.aspx

+0

ありがとうございました。いい物! –

関連する問題