0

レンダリングをクライアント側に移動することで、Webサイトのパフォーマンスを向上させることを考えています。現在のスタックは次のとおり(router, sphinx, db) + HTMLです。これを次のように変更することを考えています(router, sphinx, db) + JSON

すべてのクライアントはi7プロセッサーを実行しており、クライアント側のレンダリングパフォーマンスについてはあまり気にしません。また、resful JSON APIに接続する準備ができているクライアント側アプリもあります(これは、クライアント側とサーバー側のレンダリングについては説明しません)。

1)サーバーでのレンダリングには約20%の時間がかかります(80%はルーティング、スフィンクス、データベースに使用されます)。JSONの出力はHTMLの出力にかかる時間の約半分だと聞いていたので、10%改善され、その10%がデータ処理に入る可能性があると思います。私はそれについて正しいですか?

2)1台のサーバーが10%向上すると、100台の物理サーバーを備えた大規模アプリで同じパフォーマンスを得るには、必要なサーバーが10%少なくなります。この場合は100台ではなく90台です。これは正しいですか?

3)他の形式の代わりにJSONを出力するために、Rubyで最高のパフォーマンスを得るにはどうすればよいですか?

4)毎日のシナリオで、HTMLの代わりにJSONを出力した場合、パフォーマンスに関してどのような違いが生じる可能性がありますか?

4

2 に答える 2

1

1, 2) おそらくそうですが、数え切れないほどの要因が存在する可能性があり、パフォーマンスの向上が予想よりも低くなる可能性があります。同様に、ボトルネックが IO であり、HTML の作成がおそらく CPU に制限されている場合、CPU 負荷を減らすと、CPU のアイドル状態が増えるだけです。実際に確認する唯一の方法は、並列リクエスト処理の実行中に信頼できるベンチマークを取得し、確実な数値を取得することです。

さらに、クライアント側のレンダリングを開発するために時間を費やすことは、より多くのサーバー容量にお金を払うよりも費用がかかる可能性があります...ムーアの法則は依然として保持されており、そのような小さな改善のためにそのような最適化を行うことは、おそらく開発コストに見合うものではありません. ..おそらく、小さな節約を試みるのではなく、収益を増加させる何かに開発リソースを集中させる方が良いでしょう.

3) JSON 生成はおそらくネイティブ ライブラリを使用しますが、HTML 生成は Ruby スクリプト コードで行われます。また、ネイティブ コードは通常、解釈された (JIT コンパイルされていない) コードよりも低レベルの操作で 1 ~ 2 桁高速です。高レベルの操作ほど差が縮まるので、「JSONを生成する」が高レベルの操作なら、Rubyから呼び出しても、コンパイルされた言語コードから呼び出しても、同じように高速です。

4) 質問の意味がよくわかりませんが、回答 1、2 を参照してください...

于 2012-12-17T09:07:26.367 に答える
0

http://openmymind.net/2012/5/30/Client-Side-vs-Server-Side-Rendering/を参照 してください

特定のケースを見つける最善の方法は、それを実装してテストすることです。クライアントのパフォーマンスとレンダリング時間とエクスペリエンスを確認するために、新しい遺物と Google アナリティクス (おそらく他のものも) を使用できます。

于 2012-12-17T08:37:25.543 に答える