配列を返すRESTful APIを実装しています。バックエンドコードまたはJavaScriptで降順で配列をソートする方が効率的かどうかを知りたいですか?フロントエンドまたはバックエンドでの配列のソート
答えて
あなたのAPIはnクライアントで使用されます。パフォーマンスを考慮すると、サーバがすべてnクライアントに対して行うのではなく、各クライアントが独自にソートを行うようにすると意味があります。単純に、サーバーのCPU使用量を減らします。
また、結果をソートする必要があるかどうかは、データを使用するアプリケーションの性質によって異なります。アプリケーションがそれを決定させる。
実際にパフォーマンスの問題が発生する前に、パフォーマンスの部分を過ぎ去ってはいないでしょう。また、データのソートは実際にはコストがかからず、情報が内部的にどのように保持されているか(たとえばDBMS-sなど)によってソートがすでに行われていることもあります。最大20行で
編集
並べ替えのない、それは本当に何の重要な違いは行いません - API実装する開発者の人生を容易にし、バックエンド側の小さなソートを行います。
これは必要に応じて異なります。少量のデータがある場合は、FEですべてを行うことができます。そのため、ユーザーは異なる並べ替えのために同じ配列を読み込まないでください。
多くのデータとページネゴシエーションでは、もちろんバックエンドで行う方がよいです。
RESTful APIは、それを使用する開発者向けに構築されています。返される値、表示されるエラー、ヘッダーさえも、APIを使用する際に開発者が持つ「ユーザーエクスペリエンス」の一部です。
これでパフォーマンス上の懸念から控除する必要があります。潜在的に多くのデータですか?ページングなどでそのデータを制限できますか?チェックされていない状況では、サーバー上で長いソート操作を実行すると、そのユーザーだけでなく他のユーザーにとっても大幅にパフォーマンスが低下する可能性があります。つまり、サーバーは通常、ソートのパワーが非常に高く、適切な言語/アルゴリズムを使用しても、問題に対するマルチスレッドのアプローチが提供される可能性があります。だからあなたがサーバー側に影響を与えることを心配していないなら、ほとんどの場合、私はサーバー上でそれをやるでしょう。
このように考えてみましょう。サーバが仕事や個人のブラウザをやりたいのですか...効率は彼らのシステムのハードウェアとソフトウェアになります。いつでもあなたは負荷を "ブラウザには少しオーバーヘッドになるでしょう。しかし、クライアントシステムのすべての側面を知ることができないため、短い答えは誰も知らないのです。
これは、ちょうど配列の解析です。より大きい(大規模な、私は巨大なことを意味する)データセットを使って...あなたが求めているのは、配列のサーバー側とクライアント側の処理の間にわずかに目立つかもしれません。しかし、それが "巨大ではない"場合 - パフォーマンスの立場から6つの一方通行になる可能性が最も高い。
ベストプラクティスは、私の意見では、オーバーヘッドを制御できるコードを維持することです。サーバ側。
データがどこにあるか、どれだけ持っているか、達成したい目標によって異なります。
フロントエンドベースのソリューションは、サーバーCPUのコストがかかりませんが、ユーザーエクスペリエンスがひどくなる可能性があります。古いPCにインストールされたIEでソートされた100000個の機能の配列を想像してみてください。それはブラウザをハングする可能性があります。
処理するデータが非常に多く、サーバー上のCPU使用率が重要な場合は、フロントエンドを使用するか、それ以外の場合はバックエンドを使用します。
あなたはすでに1ページに100000の機能をレンダリングしていますか?それはかなりの情報です –
はい私はしました。 1つの地図キャンバスに100,000点以上のジオポイントとラインがあります。 –
- 1. バックエンドまたはフロントエンドのページシステム
- 2. バックエンドからフロントエンドに配列を返す
- 3. Magentoリクエスト - フロントエンドまたはバックエンド?
- 4. は、Magentoのフロントエンド&バックエンド
- 5. XML/RSSリーダー - フロントエンドまたはバックエンド?
- 6. 剃刀フレームワーク - バックエンドまたはフロントエンド?
- 7. 大規模なシミュレーション、フロントエンドまたはバックエンド?
- 8. AngularフロントエンドからC#バックエンドへオブジェクトの配列を渡す方法
- 9. フロントエンドのバックエンドでのurl_for - symfony
- 10. WebサーバーのフロントエンドまたはデータベースサーバーのバックエンドでのRedis
- 11. バックエンドまたはフロントエンドでのバイナリツリーの実装
- 12. フロントエンド= ..nginux .. =バックエンド?
- 13. バックエンド/フロントエンドCakePHP 3
- 14. フロントエンドまたはバックエンド用のDjangoはありますか?
- 15. HTTPpressのフロントエンド、HTTPのバックエンド
- 16. Symfony2とフロントエンドとバックエンドのバンドル
- 17. APIバックエンドとSPAのフロントエンド
- 18. Webpackバックエンドとフロントエンドのホットリロード
- 19. TFS 2010フロントエンド/バックエンドの展開
- 20. バックエンドへのフロントエンド接続
- 21. javaバックエンドとJavascriptフロントエンドのデプロイ
- 22. フロントエンドとバックエンドのソリューション組織
- 23. MVC .Netフロントエンドとバックエンド
- 24. RoR3のバックエンドとフロントエンドのオプションは?
- 25. フロントエンドまたはバックエンドajaxが別のURLを呼び出す
- 26. バックエンドまたはフロントエンドでコレクションを一覧表示する
- 27. フロントエンドでのJoomlaスタイルのバックエンド編集
- 28. PHPのソート配列 - >ソート($配列[2])
- 29. フロントエンド/バックエンドの違いとハプロキシで聞く
- 30. PhpバックエンドとC#フロントエンドを使ったチャットアプリケーション
データはデータベースから取得されたもので、データセットの量はどれくらいですか? – Brennan
ほとんどの場合、MySQLなどのデータベースを使用している場合はバックエンドで高速になりますが、トラフィックが多い場合はボトルネックになる可能性があります。 –
@Brennanはい、それはデータベースから来て、私は20行だけをプル – edash