1

ページの読み込み時にすべてのカテゴリとそれぞれのサブカテゴリを画像付きで表示し、UL LI を使用してコンテンツをスタイル設定してメガ メニュー内に表示するための最良の方法 (パフォーマンスに関して) は何ですか?

公開されたすべてのカテゴリとサブカテゴリを出力するメガ メニューを含むコントロールからクエリを実行することを考えていました。しかし、これは常にサーバーに戻ってクエリを実行しますか? パフォーマンスが悪い!

次に、クライアント マシン上の XML ファイルにデータを出力するクエリを実行することを考えました (明らかに、最初にサーバーからクエリを実行します) が、その後 XML ファイルを読み取ります。次に、Mega Menu コントロール内で XSLT を使用して XML データのスタイルを設定します。

お知らせ下さい?C# ASP.NET を使用して NopCommerce 1.9 を使用しています

4

1 に答える 1

1

基本的に、あるパフォーマンスの問題を別のものにシフトしているだけです。あなたが説明しているものは、N + 1 SELECT 問題として知られています。簡単な説明については、このコード プロジェクトの記事を参照してください: Select N+1 Problem – How to Decrease Your ORM Performance .

ORM を使用しているかどうかはわかりませんが、データ アクセス レイヤーに関係なく同じ問題です。ネストされた階層の 1 レベルのみを遅延ロードし、クライアントが各ノードの子をロードするために N 個のクエリ (それぞれにラウンドトリップが必要) を実行する必要がないようにする必要がありますか? または、階層全体を熱心にクライアントにロードし、オンデマンドでレンダリングする必要があります。答えは「場合による」です。自分のデータを最もよく知っているのは、おそらくあなたです。

階層が非常に深く、多くのレベルがある場合は、通常のユーザーの使用法がこの階層に深く掘り下げられているかどうかを確認してください。ユーザーの 20% 以下しかドリルダウンしない場合は、遅延ロード ソリューションで問題ない可能性があります。

カテゴリを構成するデータがそれほど大きくない場合 (つまり、50K 未満)、すべてのデータを熱心にロードしてクライアントでレンダリングするのは簡単です。

于 2012-07-07T14:34:37.273 に答える