2011-08-04 10 views
1

HttpRuntime.Cacheに格納されているすべてのユーザーに共通のデータがあります。セッションに格納される値は、HttpRuntimeキャッシュの値に依存します

次に、セッションに保存されているユーザー関連のデータがあります。

HttpRuntime.CacheCacheDependencyキャッシュを持つアイテム間の関係を定義するために使用できるメカニズム。

セッションとランタイムキャッシュの依存関係を処理するために使用するものは何ですか?

CacheDependenciesに加えて、CacheItemRemovedCallbackもあります。可能であれば、このコールバック中に各セッションから特定の値を削除することができます。

答えて

2

キャッシュの依存関係は、他の方法、つまりキャッシュが何かに依存しているときに動作します。何かがキャッシュに依存しているときではありません。

CacheItemRemovedCallbackを使用してSessionオブジェクトのアイテムを更新することはできません。コールバックは特定のユーザーのスコープ内で呼び出されないため、Sessionオブジェクトにはアクセスできません。キャッシュから削除されたアイテムに応じたデータはどのユーザーにも属している可能性があるため、すべてのユーザーのデータにアクセスできるように、データを別の場所に保存する必要があります。

+0

はい、私はキャッシュの依存性の目的を知っています。私は、セッションとキャッシュの間の依存関係を処理できるものと似たものがあるかもしれないと考えました。しかし、MAYBEでは、ユーザー関連のデータをセッションからランタイムキャッシュに格納された辞書またはハッシュテーブルに移動するのが最も簡単な方法です。 –

+2

@Radex:はい、依存するオブジェクトにユーザー依存のデータを格納する方が簡単かもしれません。 'Session_End'イベントからユーザのデータを取り除くことができるように、ユーザデータが存在するオブジェクトへの参照のコレクションを保持したいかもしれません。 Webアプリケーションはマルチスレッドであるため、異なるユーザーからアクセスされるすべてのオブジェクトへのアクセスを同期させる必要があります。 – Guffa

関連する問題