0

私はASP.netを学んでいて、同じ中で友人のためにWebアプリを作成しています。

さて、私のアプリには、ユーザーを会社の支店にマップするテーブルと、支店をクライアントにマップするテーブルがあります。ユーザーがログインすると、アクセスできるブランチのリストを取得するためにクエリを実行し、次に、ユーザーが担当するクライアントのすべてのリストを取得するために別のクエリを実行します。これは何度も発生し、多くのページで必要になります。

また、DevExpressのGridViewおよびGridViewLookUpツールを使用しています。それらに精通している場合、それらはASP.netのGridViewと同じであり、表示されたエントリが並べ替えられるか、エントリを表示するために別のページが選択されるたびにポストバックが発生します。基本的に、上記の2つのクエリを何度も実行する必要があることを知りたいと思います。

ユーザーが通常担当する平均100〜150のクライアントがあります。

ですから、私が知りたいのは、非常に高い数の場合、ユーザーがログインしている限りデータベースに再度接続する必要がないように、すべてのクライアント名を取得してセッションに保存する必要があるということです。それとも、そのままにして、データベースから毎回クライアントを見つけられるようにする必要がありますか?

4

1 に答える 1

1

Sessionこのデータはログインしているユーザーに固有であるため、変数に保持できます。もう 1 つの代替オプションはCache、UI/ビジネス ロジックとデータ アクセスの間にレイヤーを実装することです。1 日 1 回 (または定義したインターバルキャッシュ期間) クエリを実行し、Cache. 次に UI が必要になったときに、そこから取得します。データが null の場合、キャッシュの有効期限が切れていることを意味します。再度クエリして保存します。キャッシュ データはすべてのユーザーに対してグローバルですが、セッション データはそのユーザー セッションに固有です。

非常に多くのリクエストが入ってくる場合、リクエストごとに 150 個のクライアント オブジェクトのコピーをセッションに保持するのは、キャッシュに保持するのに比べて少し悪い方法のように思えます。したがって、キャッシュレイヤーオプションを選択する必要があると思います。

于 2012-07-14T23:39:28.687 に答える