2

アプリケーション内でデータをキャッシュするために .NET の MemoryCache クラスを使用しています。ほとんどのアプリケーションのユース ケースで、絶対的および/またはスライド式の有効期限キャッシュ ポリシーが私のアプリケーションに最適です。ただし、特定の期間に、アプリケーションは、アプリケーション データを更新しない長時間実行プロセスを開始する場合があります。通常、このプロセスは非常に長いため、このプロセス中にキャッシュの有効期限が切れて、キャッシュされたデータが掃除されます。これは、データをキャッシュに残しておきたいときです。MemoryCache の期限切れや清掃を一時的に停止する方法はありますか?

すべてのアイテムを破棄して、有効期限ポリシーを 1 つずつ変更することもできますが、キャッシュ内に何百万とは言わないまでも何十万ものアイテムがあることを考えると、それは、パフォーマンスの視点。

アイテムを CacheEntryRemovedCallback のキャッシュに戻すことも考えられますが、それはシステムで作業するのではなく、システムと戦っているように見え、スレッドセーフではありません。

どんなアイデアでも大歓迎です。

4

1 に答える 1

0

Memcached または NCache は、同様の方法で有効期限をサポートするフラット メモリ キャッシング システムです。データ/キャッシュ プロバイダーの Lib には、有効期限が切れたときに再読み込みするためのインテリジェンスが必要です。

MemoryCache に InfiniteAbsoluteExpiration ポリシーを使用できますが、永久に保持されます。または、独自のキャッシング ライブラリを記述します。MemoryCache は有効期限チェックにタイマーを使用します。拡張ロジックを使用して、既知のバージョンにそれを実行させることができます。

カスタム ポリシー拡張オブジェクトには、アプリケーション プロセス イベントをサブスクライブしてアイテムを期限切れにするデリゲートが必要です。

幸運を祈ります-Srini

于 2015-01-09T15:16:21.897 に答える