1

SQL Serverにバックアップされたセッションがあり、次のようなコマンドシーケンスを実行する場合

HttpContext.Current.Session['user']
HttpContext.Current.Session['user']

これは、値をフェッチするためにセッションDBテーブルに2つの要求を行いますか、それともasp.netは複数のDBヒットを防ぐためにSessionオブジェクトに対して何か特別なことをしますか?

4

1 に答える 1

1

絶対そうです。

私は SQL サーバーのセッション状態をセットアップしており、その上で Profiler を実行しました。最適化された DB 呼び出しを明確に確認できます。実際には、1 回のショットで複数のセッション アイテムを取得するための最適化があります。

以下のコードのように、SINGLE 最適化された一連の呼び出しも発生します (注: セッション アイテムを取得するための単純な単一の DB 呼び出しではありません)。

HttpContext.Current.Session['user']
HttpContext.Current.Session['userTwo']

注: .NET 4 でテスト済み

必要に応じて、独自のセッション状態プロバイダーを実装できます。 http://msdn.microsoft.com/en-us/library/ms178587.aspx

于 2012-08-03T17:27:22.873 に答える