Webサイトのすべてのユーザーが使用するグローバルデータをキャッシュするために、MemoryCache(.net 4.0)を使用してキャッシュを実装しています。
私の最初のアプローチ: 単一のオブジェクトを取得するためのキーを持つCustomerオブジェクトのコレクションを保持するKeyedCollectionを保存します。このコレクションには、最大250のそのようなオブジェクトを含めることができます。キャッシュの有効期限が切れるたびに、KeyedCollectionを再構築してキャッシュに追加します。
新しいアプローチ 今、私は、customeridをルックアップキーとして、各Customerオブジェクトをキャッシュに直接保存しないのはなぜかと考えています。したがって、MemoryCache.Defaultには、単一のKeyedCollectionに対して、最大250のそのようなCustomerオブジェクトが含まれます。利点:
- キー付きコレクションで別のルックアップを実行することなく、キャッシュから直接Customerオブジェクトを取得するため、より効率的です。
- 初めて要求された場合にのみ、新しいCustomerオブジェクトをキャッシュに追加します。キャッシュ全体を事前に構築するのではなく、一種の怠惰な追加です。
パフォーマンスやその他の要因の観点から、一方を他方に対して使用することについて何か考えはありますか?