-2

データベースからレコードを取得して表示する Web アプリケーションがあります。ユーザーのクエリは、数千のレコードに一致する可能性があります。このような場合、ユーザーが検索を絞り込むことは理にかなっています。

クエリが何百ものレコードに一致する場合、ユーザーがレコードを参照することはおそらく理にかなっています。気になるのは、Web アプリケーションがレコードの「ページ」を表示することです。Web アプリケーションのコンテキストでは、ページングは​​この種のデータを表示するための恐ろしい、恐ろしい方法だと思います。

次のシナリオを想像してください。

  1. ユーザーがクエリを実行します。アプリケーションは 20 ページあることを示し、ページ 1 を表示します。

  2. ユーザーがクリックしてページ 2 に移動し、次にページ 3 に移動します。

  3. ユーザーは、探していたレコードがページ 2 にあることに気付きます。ユーザーは、再度ページ 2 をクリックします。

  4. ユーザーは、ページ 1 で同様のレコードを見たと思います。ユーザーは、ページ 1 とページ 2 の間を繰り返しクリックして、レコードを比較します。

Web アプリケーションでは、ページを変更するたびに、まったく新しいページを読み込む必要があります。エンド ユーザーはおそらく、より多くのデータをロードするだけだと考えていますが、ブラウザーにとっては、これはまったく別のページをロードするのと同じくらいの作業です。さらに、ユーザーがページ 1 とページ 2 の間を行き来すると、同じデータがサーバーから何度もロードされます。

数十億バイトのメモリを搭載した最新のコンピューターで、コンピューターが最大でも数メガバイトを占めるテキスト データを (遅延の大きい低速接続を介して) リロードするのが正常であると考えるように条件付けられているのは正気ではありません。 .

ユーザーがレコードのページの一番下までスクロールするたびに、JavaScript を使用して新しいレコードを自動的にロードするというアイデアがあります (ユーザーがクリックするページング リンクはありません - ユーザーがスクロールするとレコードがロードされるだけです)。これはいいですね。しかし、頭に浮かぶ 1 つの欠点は、最初に「印刷用」ビューをクリックしないと、ページを印刷するのが難しいということです。

ぎこちないページング システムを使用せずに、データベース アプリケーションを Web ドキュメントに詰め込むための他のアイデアはありますか?

4

3 に答える 3

1

「ユーザーがページの一番下までスクロールすると、新しいレコードを自動的にロードする」ようにします。私の意見では、これは最もユーザーフレンドリーな方法の 1 つです。

印刷の場合、新しいセットが読み込まれると「no_print」クラスまたは何かを受け取るように、ページ分割された各セットをリグできます。ユーザーが上にスクロールしたときに、そのクラスを動的に追加/削除します。

于 2011-11-21T18:17:38.730 に答える
1

最初から、ページがスクロールされたときに新しいレコードを追加することを提案するつもりでした。ただし、非常に長いページを取得することを心配している場合。解決策は、最大数のレコードのみが表示されるように、上位のレコードを非表示にすることです。ただし、すべてが表示されるように、最大​​値が何であるかのオプションまたは最大値なしのオプションをユーザーに提供する必要があります。また、ユーザーの選択によっては、印刷に適したバージョンを提供する必要がある場合もあります。もう1つの注意点は、 のように位置を示すものを横に追加するのがおそらく最善でしょうshowing records 35-85 of 200.

于 2011-11-21T18:23:11.893 に答える
1

したがって、私のアプリケーションには、ユーザーが一見すべて同時に表示できる何百万ものレコードがあります。

同じ URL を要求し、要求ヘッダーを変更して、より多くのレコードを読み込みます。

これが何かを実装する方法です。

世界中のすべての動物をアルファベット順にリストしたいとします。下部に「< 前の 1 | 2 | 3 .. 9989 次の >」バーを配置してページネーションしたくありません。

  1. 開始してすぐに、一連の動物を返す「リソース」ルートをクエリしますGET /resources/animals

  2. リクエストには、リクエストしているものを正確に示すヘッダーが含まれます。たとえば、range: 0-24ヘッダーを追加します。関連する質問: Javascript を使用してカスタム HTTP ヘッダーを追加する

  3. サーバー側では、ユーザーがアイテム 0 から 24 を要求していることを把握でき、次のように何を返すかを伝える応答ヘッダーで応答できますreturned: 0-24/12000000。これは、アイテム 0 からアイテム 24 までの 25 個のアイテムを返品し、まだ 1200 万個のアイテムが残っていることをクライアントに伝えます。

  4. サーバーから受け取ったアイテムをレンダリングします。

  5. ユーザーがページをさらに下にスクロールすると、次の一連の項目を照会します。数学を使用して現在表示されているものを把握することで、ユーザーが表示している「ページ」を計算し、対応する結果を要求できます。

これが実際に機能していることは、こちらの Dojo の例で確認できます。

この件についてもっと読む。

于 2011-11-21T18:26:20.843 に答える