私は自分自身が正しくクリーンアップされなかったCacheItem
に見つかりました。「Priority」と「AbsoluteExpiration」のキャッシュはどのように連携しますか?
AbsolutExpiration
はの「キープアライブ」を設定するために使用されます。MSDNを見て、UTCベースの計算を使用してに自分自身を修正している間、私はこの混乱の情報を見つけましたCacheItem
、Priority.NotRemovable
は、CacheItem
を永遠に強制的に使用するために使用されます。どのプロパティが他のプロパティをオーバーライドするかについての通知はありません。
以下のコードはコンパイルされ、SQLプロファイラはデータベースが1回だけクエリされることを確認し、他のすべての要求はキャッシュから取得されたことを確認します。
CacheItemPolicy _cachePolicy = new CacheItemPolicy()
{
AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddHours(6)),
Priority = CacheItemPriority.NotRemovable
};
私はこのコード力のキャッシュアイテムは永遠にとどまることなく、設定に関するMSDNのノートに沿ったもので、作成から12時間後にクリアされていることを前提としています。
そして、「キャッシュ実装はキャッシュから エントリを立ち退かせるために、キャッシュエントリの数を管理するための方法を提供した場合にのみ キャッシュエントリのNotRemovable優先度を設定する必要があり、キャッシュの実装」他の面では、なぜ両方のプロパティが一体となって動作するのでしょうか?この実装は、「より多くの非リムーバブル」なんかをもたらしますか?
不明なドキュメントのおかげで、私は自分自身が不思議でした。私の場合、キャッシュされたエントリは、有効期限が切れる前にキャッシュが大量に掃除されないように期限切れになるまで削除されないようにします。 –