私は仕事用のWebサイトを構築していますが、より重要な機能の1つは、データを表示するリッチコンテンツグリッドです。デフォルトでは、ページごとに20個のアイテムしか表示されませんが、データベースには、フィルタリング、並べ替え、検索が可能な最大200個のアイテムがあります。
当社の営業およびマーケティングチームは、すべてのデータを1か所に表示し、データをページごとに表示するのではなくスクロールできるように、「すべてリスト」機能も要求しています。
このシステム全体は、サーバー側でASP.Net MVC、クライアント側でjQueryとFlexigridを使用して構築され、JSONを使用してAJAXを介して2つの間でデータを交換します。
実際のデータ転送部分はかなりしっかりしています。20件の結果のページはリクエスト全体で800msかかります(Flexigridを介してサーバーにリクエストをPOSTし、レスポンスを取得します)。時間がかかるのは、クライアント側の処理です。
クライアント側の処理の一部をサーバーにオフロードできます。ただし、これによりサーバー側の操作に時間がかかり、返されるドキュメントのサイズがはるかに大きくなります。高速インターネット接続の状況では問題ありません...しかし、必ずしもそうとは限りません。
私が持っている他のオプションは、できるだけ多くのデータをダウンロードし、データ処理の大部分をクライアントにシフトすることです。これにより、リクエスト時間が基本的にnilに短縮されます(データセット全体ではなく、変更された要素のみをフェッチします)。高速のCPUと大量のRAMを搭載したマシンではかなりうまく機能しますが、必ずしもそうとは限りません。
少なくとも1人がこれを「本当の質問ではない」とフラグを立てたので、はっきりさせておきます...
- データ転送時間の問題が発生するほど多くの処理をサーバーに移動することなく、クライアント側の処理時間の問題を軽減するために何ができるでしょうか。
- クライアント側の処理とサーバー側の処理のバランスを取る場合のベストプラクティスは何ですか?
- サーバー側またはクライアント側でエラーを発生させる方がよいでしょうか。
- 物事がうまくいかないように、これらの交換をより適切に最適化するために使用できるツールは何ですか?