私は多くの情報をキャッシュするウェブサイトを持っています。私はasp.netキャッシュ内のものを格納することについて矛盾する情報を見ている。asp.netでアイテムを保存/取得する最も効率的な方法は何ですかhttpContext.Cache
Dictionary<string, List<Car>> mydictionary;
私は「MyDictionary」などの文字列キーで全体を格納し、私は、オブジェクトを引き出したら、ドリルダウンすることができます。たとえば
は、私はこのデータ構造を持って言うことができます。
HttpContext.Cache.Add("MyDictionary",
mydictionary,
null,
Cache.NoAbsoluteExpiration,
new TimeSpan(10, 0, 0),
CacheItemPriority.Normal,
null);
var myDict = HttpContext.Cache["MyDictionary"] as Dictionary<string, List<Car>>;
私が行うことができ、他のことは、それを打破し、キャッシュに分けて、私の辞書に各項目を保存(キャッシュ与えられたが、とにかく辞書である)です。
Dictionary<string, List<Car>> mydictionary;
foreach (var item in mydictionary.Keys)
{
HttpContext.Cache.Add(item, mydictionary[item], null, Cache.NoAbsoluteExpiration, new TimeSpan(10, 0, 0), CacheItemPriority.Normal, null);
}
var myitem = "test";
var myDict = HttpContext.Cache[myItem] as List<Car>;
パフォーマンスの含意は非常に異なるだろう
キャッシュは、頻繁に使用される「高価な」オブジェクトを再作成するコスト(つまり、再作成のコストがキャッシュのコストを上回る)を節約する手段であることを覚えておいてください。キャッシュする価値がある場合は、キャッシュにLRUルールを適用してパフォーマンスを最大化します。すべてのエントリを1つのキャッシュエントリ( 'MyDictionary')に入れると、LRUは無効になり、MyDictionaryの保持が他のエントリを保持するより効率が悪いとキャッシュが判断した場合、 – Will