ASP.NET アプリケーションで作成しているすべての検索ページをキャッチするセットがあります。最初の検索ページ、SERP、そして単一の商品詳細ページがあります。3 ページすべてに検索バーがあり、最初の基準、追加の基準、高度な基準の選択肢があります。
すべての基準をまとめると、メインの検索ボックスに加えて、20 の異なる基準パラメーター (価格、価格、販売アイテム、作成日など) と、パラメーター ID の 3 つのコレクションがあります。これらのコレクションは、ユーザーが検索できるメーカー、製品ライン、およびカテゴリのリストからのものです。したがって、この固定セットの 20 フィールドと、1 つまたは 2 つの製造元を持つことができる 3 つのコレクション、またはチェックボックスを選択して検索したい行の 100 個の Guid のコレクションを保持することができます。
私たちの古いシステムでは、単一のフォーム ソリューションがあり、すべてをポストバックしてビジネス オブジェクトに送信し、それを結果を返すメソッドに渡しました。この新しいフォームでは、ページからページへと結果を送信し、この基準を維持する必要があります。私たちは、データを永続化するための最良の方法を見つけようとしています。最良とは、最も効率的であることを意味します。
クエリ文字列 - これは、3 つのコレクションの Guid 値の大規模なコレクションでは機能しません。
セッション - 基準オブジェクトを作成し、それをセッションに保存します。それらがページからページへと移動するときに、それを引き出すことができます。ピーク時には、おそらく 200 ~ 300 人のユーザーがサーバーを同時に使用しており、検索が最もよく使用される形式です。これらすべてのセッション変数でのパフォーマンスが心配です。
データベース - この基準オブジェクトをシリアル化してデータベース (SQL Server 2k5) に格納することを考えていました。ユーザーは常に現在の検索または最後の検索をデータベースに保持します。これにより、Session ソリューションから Web サーバーの負荷がいくらか軽減されますが、このオブジェクトの負荷、シリアライゼーション、データベース ラウンド トリップ、およびアンロードがフォームの速度を低下させ、ユーザー エクスペリエンスに影響を与えるのではないかと心配しています。
どの方法が最も効率的に機能するか、または私が見落としているベスト プラクティスやパターンが認められているかどうかについて、アドバイスを求めています。