ページネーション:サーバー側ですか、クライアント側ですか?
-
03-07-2019 - |
質問
ページネーションを処理するには何が最適ですか?サーバー側ですか、それともJavaScriptを使用して動的に実行しますか?
私は、Ajax に負荷がかかり、データを動的に取り込むプロジェクトに取り組んでいます。そのため、dom を使用する JavaScript ページネーション システムに取り組んでいます。しかし、すべてを処理したほうが良いのではないかと思い始めています。サーバ側。
みんなはどう思いますか?
解決
正しい答えは、優先順位とページ分割されるデータセットのサイズによって異なります。
サーバー側のページネーションは次の場合に最適です:
- 大規模なデータセット
- 初期ページの読み込みが高速化
- javascriptを実行していない場合のアクセシビリティ
クライアント側のページネーションは次の場合に最適です:
- 小さなデータセット
- 後続のページの読み込みを高速化
したがって、主に化粧品の理由でページ付けをしている場合、クライアント側で処理する方が理にかなっています。また、初期読み込み時間を短縮するためにページングを行う場合、サーバー側が当然の選択です。
もちろん、Ajaxを使用して後続のページをロードする場合、後続のページのロード時間に対するクライアント側の利点は減少します。
他のヒント
クライアント側でそれを行うと、ユーザーは最初に必要ではないすべてのデータをダウンロードし、ページネーションの主な利点を削除します。
このような種類のAJAXアプリでこれを行う最良の方法は、AJAXが次のページのサーバーを呼び出し、クライアント側スクリプトを使用して現在のページを更新することを追加することです。
ページが大きく、ページ数が多い場合は、AJAX 経由でサーバーにページを分割してリクエストする方が良いでしょう。したがって、リクエスト URL に基づいてサーバーにページネーションを実行させます。
また、ユーザーが表示するであろう次の数ページをプリフェッチして、インターフェイスの応答性を高めることもできます。
ページ数が少ない場合は、すべてを事前に取得して、クライアント上でページ分割する方が良い選択かもしれません。
データサイズが小さい場合でも、最適な選択はサーバー側のページネーションです。 Webアプリケーションがさらに拡大しても、後で心配する必要はありません。
データサイズが大きい場合、答えは明らかです。
サーバー側-現在のビューに十分なコンテンツをクライアントに送信します。
実際の制限の世界では、サーバー側でページングして、データの送信に関連するすべてのリソースを節約します。また、サーバーは、巨大なページを要求する悪意のある/機能不全のクライアントから自身を保護する必要があります。
そのコードがうまくいっている場合は、「スマート」を追加します。クライアントに「次」を取得するおよび「前」ページングしてメモリに保持します。ユーザーが次のページに移動したら、キャッシュを更新します。
クライアントソフトウェアがこの種のページキャッシングを行う場合、データが古くなる速度(変化する可能性が高い)と、キャッシュされたデータのページがまだ有効であることを確認する必要があるかどうかを検討してください。 2分以上経過している場合は、再リクエストしてください。たぶん" dirty"その中のフラグ。そんな感じ。これが役立つことを願っています。 :)
JavaScriptはすべてのデータをメモリに保持し、1ページずつ表示するということですか?または、AJAXを使用して、必要に応じてサーバーから各ページをダウンロードしますか?
後者の場合は、ソートについても考慮する必要があります。 JavaScriptを使用してソートする場合、一度に1ページしかソートできませんが、これはあまり意味がありません。したがって、ソートはサーバーで実行する必要があります。
サーバー側のページネーションを好みます。ただし、それを実装するときは、SQLを適切に最適化していることを確認する必要があります。たとえば、MySQLでは、LIMITオプションを使用するとインデックスが使用されないため、インデックスを適切に使用するようにSQLを書き換える必要があると思います。
G-Man
ここで指摘すべきもう1つのことは、生のデータセットをページングするだけに制限されることはほとんどないということです。
表示している1つ以上の列で特定の用語を検索し、いくつかの列で並べ替えてから、このフィルター処理されたデータセットをページングできるようにする必要があります。
このような状況では、このロジックをクライアント側またはサーバー側で検索および/またはソートする方が良いかどうかを確認する必要があります。
考慮すべきもう1つの点は、Amazonのクラウド検索APIが非常に強力な検索機能を提供することです。クラウド検索でデータをホストしている場合は、明らかにクラウド検索で検索と並べ替えを処理できるようにする必要があります。