2009-03-10 11 views
1

私はフィルタリングと並べ替えが可能な数千の行を持つグリッドを持っています。各行で詳細ボタンをクリックすると、そのページに関する詳細情報を含む新しいページが表示されます。これはボタンなので、中クリックまたは右クリックして新しいタブで開くことはできません。さらに、クリックすると、フィルタと検索結果が失われます。検索とセッションの状態に関するアーキテクチャ上の質問

この問題を解決するには、以下の点を考慮しました。リンクをボタンに切り替え、フィルタリングと検索を行うときは、ポストリクエストの代わりにgetを使用します。このようにして、右クリックまたは中クリックで新しいページに切り替えることができます。通常はリンクをたどっていれば、正しく動作します。

この変更は行われませんでした。詳細ページに「次の結果/前回の結果」ボタンのセットを追加するように求められました。これにより、移動することができます。洗練されたソリューションではありませんが、少なくとも機能します。

詳細ページにクエリ文字列パラメータを追加し、フィルタに基づいて検索クエリを再生成し、コード内で次の結果と前の結果を得ることを提案しました。

チームメンバーがこのソリューションを使用しました。彼は、データベースを再クエリすることはサーバーリソースの無駄であると考えています。代わりに、結果のリストを含むセッション変数を追加するソリューションが提案されました。それを使ってナビゲートすることができます。

ナビゲーションを中断することなく複数のタブを開くことができず、新しい結果がリアルタイムでリストに追加されないため、問題が発生しました。また、最適化について心配している場合は、セッションをメモリを消費し、サーバーの複製を防ぐために最後に使用することになります。

最適なソリューションは何ですか?

答えて

2

セッションは勝者のようには聞こえませんが、多くのユーザーがセッションを拡大することはありません。

データベースに繰り返しヒットする必要はないようですが、ユーザー数、リフレッシュ/フィルタリングの頻度、およびそのクエリのコストはどれくらいですか?

クエリーストリングを使用する場合は、パラメータごとにページをキャッシュすることができます。

詳細を取得するためのボタンのAJAXコードはありますか?基になるグリッドをそのまま残し、ディビジョン/パネルまたは新しいウィンドウ/タブに詳細を表示します。