1

私は、完全に1ページにまとめられ、一連のテーブルデータをグリッドで表示することに基づいたWebアプリケーションを開発しています。データベースには約30の異なるテーブルがあり、ユーザーはそのうちの1つをいつでも画面にグリッドで表示するように要求できます。すべてではありませんが、これらのテーブルのほとんどは1000行未満です。これらのグリッドのデータは、ajaxを介して呼び出され、ロードされています。

現在、ログイン画面を表示し、すぐにいくつかのメインテーブルをプリロードします。これにより、ユーザーがユーザー名とパスワードを入力すると、最初のグリッドが読み込まれます。クリックしてこれらのデータグリッドの1つを表示した後、ajax呼び出しを待つ必要がないため、これによりユーザーエクスペリエンスが大幅に向上しました。その結果、私はそれをさらに一歩進めることを考えています。

バックグラウンドで30個のテーブルすべてをロードするためにajax呼び出しを行うことを検討しています。それらは必要になるまでDOMに追加されませんが、代わりに配列に追加されます。ネガティブな点は、ユーザーがセッションでこれらのテーブルの半分を使用するかどうかはわかりませんが、通常、ユーザーの要求に応じてすぐに表示され、ユーザーエクスペリエンスが向上します。

したがって、私の質問は、ajax呼び出しを介して30個の完全なデータテーブル(ほとんどの場合、テーブルあたり約50〜1000行)を配列に格納することをお勧めします。そうであれば、最高のパフォーマンスを得るためにそれを行うための最良の方法は何ですか(維持念頭に置いて、私はそれらを配列に入れているだけで、プリロード後にそれらをdomに追加していません)?次のうちどれが最良の方法でしょう:

  1. ページの読み込み時にテーブルごとに30回のajax呼び出しを行う
  2. すべてのテーブルを返すページロード時に1つのajax呼び出しを行います
  3. ページの読み込み時に5つのajax呼び出しを行い、それぞれが6つのテーブルのように返される
  4. ajax呼び出しをスキューして、いくつか作成し、完了したら、さらにいくつか作成します
  5. 他の方法...
4

2 に答える 2

1

これらのテーブルは編集中ですか、それとも表示のみですか?

上記の回答が表示のみの場合は、30 個のテーブルすべてをロードし (BLOB データを含むフィールドがないと仮定)、それらをセッション メモリではなくアプリケーションのメモリに格納する必要があります。

テーブルを編集する場合は、そのユーザー (グループ?) が頻繁に使用するテーブルを特定し、それらを事前にロードします。

繰り返しますが、最初のマイルストーンで十分だと思います。ユーザーのセッションで 30,000 行のデータをロードするというアイデアが気に入るかどうかはわかりません。特に、使用されない可能性があるため....データベース内のデータが変更された場合、同期しますか? それが変わったことをどうやって知ることができますか?データベースをポーリングしますか? 発生し始めている問題を参照してください。

于 2013-01-23T20:20:45.707 に答える
1

メイン テーブルを 1 回の呼び出しでロードし、残りのテーブルを別の呼び出しでロードすることをお勧めします。主な問題は、何かを一緒にバッチ処理すると、AJAX 要求全体が完了するまで、その情報をアプリケーションで使用できないことです。そのため、1 回の呼び出しですべてをロードすると、時間がかかる場合があり、ユーザーがログインを完了したときにメイン テーブルの準備ができていません。

于 2013-01-23T20:21:23.750 に答える