4

私は ASP.Net のキャッシュのラッパーを作成していますが、それらが使用するキャッシュ アルゴリズムについて興味があります。たとえば、キャッシュ内のすべてのアイテムの有効期限と優先度が同じであると仮定すると、どのようにしてアイテムを消去するのでしょうか?

ウィキペディアには、11 の異なるキャッシュ アルゴリズムがリストされています。ASP.Net はそれらのいずれかを使用しますか?

4

1 に答える 1

3

あなたが説明したアルゴリズムは、キャッシュがいっぱいになったときにキャッシュからアイテムをいつ削除するかを決定するためのものです。ただし、ASP.NET キャッシュには一定の容量がありません。ヒープ上に存在するため、サイズは無制限です。

内部的に、キャッシュには一定の頻度で作動するタイマーがあります。ティックごとに、期限切れのアイテムを探して削除します。アイテムにスライド有効期限がある場合、すべてのキャッシュ取得でその有効期間が延長されます。それ以外の場合は削除されます。

アップデート:

私は Cache クラスを調べましたが、実際には、「メモリ プレッシャ」が高くなりすぎると、使用頻度の低いアイテムを特定の割合で削除するロジックがあります。System.Web.UI.Caching.CacheMemoryStats.GetPercentToTrim()およびに移動すると、Reflector でこれを確認できますCacheCommon.CacheManagerThread(Int32)。クラスにはかなり複雑なロジックがあり、UsageBucket今は理解できませんが、メソッドの名前が何かである場合、特定のエキゾチックなキャッシュ アルゴリズムではないように見えますが、頻度の低いアルゴリズムに基づいたものです。 -使用されたアルゴリズム。

だから私は間違っていたと思います:)

于 2013-01-30T06:38:25.650 に答える