2013-02-07 7 views
5

クラスCacheItemsのプロパティの違いは何ですか? MSDNのドキュメントからHttpContextのCacheとItems Propertiesの違いは何ですか?

キャッシュ
は、現在のアプリケーションドメインのキャッシュオブジェクトを取得します。

アイテム
HTTP要求中の​​IHttpModuleインターフェイスとIHttpHandlerインターフェイスとの間でデータを整理し、共有するために使用することができるキー/値のコレクションを取得します。

私はそのドキュメントが説明しようとしていることを本当に理解していません。

ASP.NET Webアプリケーションで作業しているときに、複数のユーザーコントロールがデータベースから同じデータを参照しないように、データの要求ごとのキャッシュによくItemsを使用しました。これはthis articleに記載されています。

今日、私はCacheプロパティの使用方法について、リクエストごとのキャッシュのように見えました。私はその違いを理解しようとしましたが、これら2つを比較して良い文書は見つかりませんでした。だから私は知りたいです...

HttpContextのCacheとItemsプロパティの違いは何ですか? の例を詳しく説明してみてください。のように、実際のシナリオごとに1つずつ使用することを選択してください。

答えて

10

アイテムはリクエストごとに提供されるため、指定されたHTTPリクエストに対して指定されたユーザだけが利用できます。キャッシュは永続的な時間メモリに格納され、特定のユーザーに依存しません。したがって、キャッシュは複数のユーザー間で複数のリクエストで共有できますが、アイテムはリクエストごとにユーザーごとに割り当てられます。

データを保存する時間によって異なります。 Itemsを使用して、ObjectContextやDbContextのようなものをEFに格納します。これは、指定された要求に対してのみ共有したいものです。しかし、すべてのユーザーが多くのリクエストで使用するテーブルのデータを参照するので、キャッシュが改善されます。

+0

「キャッシュ」データの分割に使用された要求は何ですか?私たちは、1つのユーザーにつき1つのドメインで、さまざまなドメインでリクエストを処理する1つのWebアプリケーションを用意しています。私が維持しているコードは、ユーザーごとにキャッシュデータを分離するために異なるドメインに依存しているようです。つまり、ユーザー固有のデータがUserIDなどのキーなしでキャッシュに格納されているということです。これはどうしたらうまくいくのでしょうか?また、私がリンクしている記事では、 'Items'キーでuserIDを使用しています。これは、' Items'が多くのユーザーの要求で共有されていると思うようになります。今私は以前よりも混乱しています... –

+0

セッションはユーザー固有のため、キャッシュまたはセッション。ユーザーのIDをキャッシュキーに追加することによって、キャッシュをユーザー固有にすることもできます。各ユーザーは、独自のキャッシュ固有のエントリを持つことができます。ここで提供した記事では、HttpContext.Itemsのデータを複数のユーザーコントロールまたはカスタムコントロールに共有する方法を示しましたが、そのユーザーの現在の要求内でのみ行うことができました。 Itemsコレクションは、すべての要求に基づいて構築されます。そのため、データは次の要求で再び使用可能になります。 –

関連する問題