2

私は C#/asp.net ページを作成しており、現在、ページの読み込み時にデータベースから引き出す大量のデータ (たとえば、100,000 の Datetime int ペア) を作成していますが、ページの読み込みごとに同じデータを読み込むのは少しばかげているようです。この値をセッションに保存することを検討しましたが、複数のブラウザー タブが問題を引き起こしているようです。

これらの値を保存するより良い方法はありますか?また、複数のブラウザー タブをサポートする必要がある場合、適切なセッションを使用していますか?

4

4 に答える 4

9

セッションが大量のサーバー メモリを消費します。セッションをデータベースに保存することもできますが (そもそもこれがセッションにセッションを保存する理由であるため、目的に反します)、行間を読むこともできます (各訪問者が 100,000 の一意の日時ペアを必要とするのはなぜですか?)これらの値をキャッシュに保存することを検討する必要があると思います (すべてのユーザーで同じである場合)。

セッションに 10 万個の int ペアを格納する際の問題は、1 人または 2 人、場合によっては 12 人のユーザーに対しても機能する可能性があることです。しかし、あなたのウェブサイトが人気になると、スケーラブルではなくなります。サーバーは、それぞれ 100,000 個の int ペアの 500,000 ユーザー セッションを格納できません。すぐにメモリ不足になる

于 2013-03-05T13:29:58.227 に答える
2

このデータがユーザーごとに一意である場合、セッションはデータをキャッシュする有効な場所である可能性があります。ただし、これを行う場合、セッションに追加したものはそこにとどまり、削除する必要があることに注意してください。また、ユーザー セッションごとに大量のデータを保存しているため、大量のサーバー メモリを消費します。これが Steve の答えです。大量のセッション データを持つ複数のユーザーがいると、スペースが足りなくなることがよくあります。

ユーザーごとにデータが変わらない場合は、キャッシュが答えです。

于 2013-03-05T13:32:51.250 に答える
0

セッション変数の代わりにキャッシュを使用する場合: http://msdn.microsoft.com/en-us/library/aa478965.aspx

于 2013-03-05T13:36:19.597 に答える
0

セッションが扱いにくくなる可能性があります。ページをラップするマスター ページを検討することもできます。その後、データをマスターに一度ロードして、ページ全体で使用できるようにするか、ページ上の非表示のオブジェクト (リテラルなど) に配置して、アクセスできます。

ページ間にすべてのペアが必要なのはなぜですか?

于 2013-03-05T13:31:17.787 に答える