0

ASP.Net MVC3 ベースの Web アプリがあります。データベースに典型的なマスター データ テーブルがあります。SQL データベースからドロップダウンとオートコンプリートを設定しながら、これらのテーブル データ (およびいくつかのビュー) を検索する必要があります。そのため、ユーザーがページを更新しても、データベースから (ほとんど) 変更されていないマスター データが取得されます。ほとんどのマスター データは 100 レコード未満です。

私が入れたらそれは賢明でしょうか

<master-data-object> を「アプリケーション レベル変数」(または少なくとも「セッション レベル」) にリストします。

この往復を避けるには?すべてのマスターデータに対してそれを行うのはどうですか? アプリ レベルの変数を「オンデマンド」で設定すると、最初のペイロードの攻撃性が低下する可能性があると思います。特定のシナリオでデータを更新するために無効化/再入力できます。

これを達成するためのあなたの考えや他のより良いアプローチを提案してください。そして最後に、この最適化は実際に価値がありますか (つまり、アプリ レベルのアクセスと比較して db が見つかったトリップを持っていることは大したことではないということです - 私は適度なユーザー アクセスを行っており、db のサイズは 10-15MB のようです)。私たちは物事をシンプルで清潔に保つよう努めています。

4

1 に答える 1

1

ASP.Net 出力キャッシュを読んでください。出力キャッシュを使用する場合、最初のリクエストの結果を記憶し、実際の処理を行わずに何度も使用するように Web サーバーに指示します (この場合はデータベースにアクセスしません)。

一言で言えば、これはあなたがしなければならないことです

ルックアップ データを提供するコントローラー アクションを作成し、それらを出力キャッシュ属性で装飾します。

UI コードから Ajax を使用して、ルックアップ データを上記のコントローラー アクションからリストとドロップダウンにロードします。

UI は Web サーバーに対して多くの呼び出しを行いますが、Web サーバーはキャッシュから結果を提供します。これは、データベースの負荷を軽減するだけでなく (基本的な懸念事項ではありません)、速度とシンプルでクリーンで目立たないという点で非常に優れたパフォーマンスをもたらします。

この件に関する最初の良い読み物

http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/improving-performance-with-output-caching-cs

ハッピーコーディング

于 2013-04-25T02:07:50.980 に答える