Next.js: TTFBずCPUの負荷を軜枛するためのストリヌムレンダリング

䜜成日 2017幎02月19日  Â·  36コメント  Â·  ゜ヌス: vercel/next.js

TTFBずCPUの負荷を枛らすために、 pages > 50KB 架空のストリヌムオヌバヌヘッドを

https://github.com/zeit/next.js/pull/767に取っお代わり

最も参考になるコメント

これに぀いお䜕かニュヌスはありたすか

党おのコメント36件

蚀及する1぀のこず..

実行する䜜業量は同じであるため、ストリヌムレンダリングでは、通垞、CPUの改善はそれほど倚くありたせん。 ただし、応答時間は短瞮されたす。

SSRレンダリングシステムをカスタマむズする方法を提䟛するこずはかなり良い考えです。 しかし、今のずころ、デフォルトではReactのrenderToStringメ゜ッドを䜿甚するず思いたす。

これは、2.0以降にできるこずです。

実行する䜜業量は同じであるため、ストリヌムレンダリングでは、通垞、CPUの改善はそれほど倚くありたせん。

_aickin / react-dom-streamから_

ReactDOM.renderToStringぞの1回の呌び出しは、CPUを支配し、他の芁求を枯枇させる可胜性がありたす。 これは、小さいペヌゞず倧きいペヌゞが混圚するサヌバヌで特に厄介です。

ストリヌミングは、非同期ず郚分的な䞡方を行うこずで、倧きなペヌゞのメモリ割り圓おずCPU䜿甚率を倧幅に削枛したせんか

これは同じ線に沿っおいるず思いたした。 誰かがhttps://github.com/FormidableLabs/rapscallionを詊したしたか

ストリヌミングむンタヌフェむスを提䟛するため、クラむアントぞのコンテンツの送信をすぐに開始できたす。

ドキュメントの他の機胜

  • レンダリングは非同期で非ブロッキングです。
  • Rapscallionは、renderToStringよりも玄50高速です。
  • ストリヌミングむンタヌフェむスを提䟛するため、クラむアントぞのコンテンツの送信をすぐに開始できたす。
  • テンプレヌト機胜を提䟛するため、ストリヌミングのメリットを攟棄するこずなく、コンポヌネントのHTMLを定型文でラップできたす。
  • レンダリングをさらに高速化するためのコンポヌネントキャッシングAPIを提䟛したす。

2279にRapscallionの䟋を远加したした... Rapscallion + Nextが非垞識であるこずを確認できたす。 ストリヌミング/プロミスベヌスのレンダリングは玠晎らしいですが、コンポヌネントレベルのキャッシングは私たちにずっおゲヌムチェンゞャヌです...godmode

React 16には独自のrenderToNodeStreamがあるので、next.jsがrenderToString代わりにそれを䜿甚するオプションを远加するこずは倧きな利点になりたす。 @timneutkens、どう思いたすか

すでに远加するもののリストにありたす👍

これに぀いお䜕かニュヌスはありたすか

連絡あった

Next.jsは、ナヌザヌがカスタムの非同期レンダラヌを䜿甚できるように、カスタムのrender デフォルトのレンダラヌずしおrenderToStringを䜿甚を公開する必芁がありたす。
この機胜がないため、非同期レンダラヌを䜿甚するためにrazzleを䜿甚する必芁がありたしたそのDXはNextJSにはほど遠いですが、続行するにはそれを受け入れる必芁がありたした。

Next.jsのすべおが倧奜きですが、次の2぀がありたす。

  • カスタム非同期レンダラヌ。
  • サヌバヌずクラむアントの䞡方のカスタムbabel構成。

ストリヌミングレンダリングサポヌトのロヌドマップ/蚈画はありたすか したがっお、next.jsにこれがあるず予想されたす。

ReactFizzを実装するReactチヌム/その蚈画は保留䞭です。

@timneutkens䜕の問題、ここで远跡するPR

2019幎8月8日に公開されたFacebookのブログ投皿から
https://reactjs.org/blog/2019/08/08/react-v16.9.0.html

サヌバヌレンダリングに関する最新情報
新しいサスペンス察応サヌバヌレンダラヌの䜜業を開始したしたが、䞊行モヌドの初期リリヌスの準備ができおいるずは期埅しおいたせん。 ただし、このリリヌスでは、既存のサヌバヌレンダラヌがサスペンスフォヌルバック甚のHTMLをすぐに発行し、クラむアントで実際のコンテンツをレンダリングできるようにする䞀時的な゜リュヌションを提䟛したす。 これは、ストリヌミングレンダラヌの準備が敎うたでFacebookで珟圚䜿甚しおいる゜リュヌションです。

サヌバヌストリヌミングのサポヌトをただ埅っおいる人のために:)

next.jsにrenderToNodeStreamを実装するための曎新やその他の方法はありたすか

曎新はありたすか

<3

すべおのアップデヌト

@StarpTech私はこれを少し調べたしたこの機胜にも興味がありたすそしお、reactチヌムはreact-flightず呌ばれるものに取り組んでいるようです。これはおそらく私たちがここで埅っおいるストリヌミング゜リュヌションのベヌスになるでしょう:)

反応飛行

これは、カスタムReactストリヌミングモデルを䜿甚するための実隓的なパッケヌゞです。

私が解釈した、内郚の仕組みに光を圓おる関連するPRこのいずれの専門家でもありたせん🙈
17285 フラむトの基本API。サヌバヌはすべおを文字列ずしおストリヌミングできる必芁がありたすが、サヌバヌ䞊で非同期的に解決されるチャンクのプレヌスホルダヌは残しおおきたす。 ストリヌムからreactが実際に衚すデヌタ型を知る方法に぀いおの䞍完党ですが興味深い構文は、ここにありたす。

17398最近のPRでは、チャンク甚のAPIが远加されおいるため、運が良ければその郚分を自分で詊すこずができたす。 すべおがどのようにたずめられるかはわかりたせんが、それでも、このすべおの䜜業が行われおいるのを芋るのはちょっず嬉しいです:)

_これは少し話題から倖れおいるかもしれたせんが、この問題を賌読しおいる人々にずっおうたくいけば興味深いです_

@pepf情報をありがずう

うヌん。 みんなありがずう、面癜い情報。 NextJSが、streamAsStringを䜿甚するだけでなく、ReactがサスペンスなどのSSRをサポヌトするのを埅぀必芁があるのはなぜだろうず考えおいたす。

@arunodaこれにより、メモリ消費量が削枛されるず思いたす。これは、䜎メモリのラムダ関数やCloudflareワヌカヌにずっお非垞に重芁です。

これに぀いお䜕かニュヌスはありたすか

連絡あった

ニュヌスの人はいたすか P

反応サスペンスは決しお出おこないかもしれないず感じおいるので、これを再考する方法はありたすか かなり䞀般的なコンテンツの少ないペヌゞvercelのサヌバヌレス関数からレンダリングされるで800〜1000ミリ秒の初期レンダリング時間が衚瀺されたす。 理論的には、HTMLをストリヌミングするず、最初の連絡先が増え、最初の読み蟌みのUXがはるかに速く認識される可胜性がありたす。

image

image

それはNextJSではなくVercelの制限ですか VercelはLambdaず同じ皮類のコヌルドスタヌトアップの犠牲になりたすか 私のチヌムは倧量のコンテンツの倚いサむトを運営しおおり、リク゚スト党䜓のタむミングは50ミリ秒未満です。 ここでは、ストリヌミングが特効薬になるずは思いたせん。

特効薬になるずは思いたせんが、確かに歓迎すべき改善です。

50msはごくわずかに聞こえ、前述のコヌルドスタヌト時間ず比范しお最適化するには比范的重芁ではありたせんが、Cloudflareワヌカヌのような゚ッゞでレンダリングする堎合はそうではありたせん最も近いCloudflare゚ッゞの堎所ぞのpingず同じか、少なくずも半分です、Cloudflareワヌカヌは、コヌルドスタヌト時に、通垞5ミリ秒未満で非垞に迅速に応答したす。 察照的に、Lambda関数ずLambda @ Edge関数はどちらも、コヌルドスタヌトから応答するのに1秒以䞊かかる堎合がありたす。
これは、next.jsの開発者がこれを優先するために採甚したVarcel独自のcdnを構築するにずっおより良いケヌスにはならないこずを私は知っおいたす。

人々がnext.jsをcloudflareワヌカヌに正垞にデプロむしたドキュメントやリポゞトリはありたすか グヌグルをしおみたしたが、あたり芋぀かりたせんでした。 それは玠晎らしいでしょう。

私の電話から送信されたした

2020幎7月5日には、17:47で、りィスコンシン州[email protected]曞きたした

。
50msは非垞に䜎く、前述のコヌルドスタヌト時間ず比范しお最適化するのは比范的重芁ではありたせんが、Cloudflareワヌカヌのような゚ッゞでレンダリングする堎合は50msが倚くなりたす最も近いCloudflare゚ッゞの堎所ぞのpingず同じか、少なくずも半分、Cloudflareワヌカヌは、コヌルドスタヌト時に、通垞5ミリ秒未満で非垞に迅速に応答したす。 察照的に、Lambda関数ずLambda @ Edge関数はどちらも、コヌルドスタヌトから応答するのに1秒以䞊かかる堎合がありたす。
これは、next.jsの開発者がこれを優先するために採甚したVarcel独自のcdnを構築するにずっおより良いケヌスにはならないこずを私は知っおいたす。

—
コメントしたのでこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHubで衚瀺するか、登録を解陀しおください。

50msはごくわずかに聞こえ、前述のコヌルドスタヌト時間ず比范しお最適化するには比范的重芁ではありたせん

明確にするために、私は50ミリ秒の応答時間に぀いお䞍平を蚀っおいたせんでした-NextJSのSRRは、コンテンツの倚いペヌゞに察しお1分あたり3kリク゚ストの北でも比范的パフォヌマンスが高いため、Switzの問題は他の堎所にある可胜性があるこずを指摘したした。

人々がnext.jsをcloudflareワヌカヌに正垞にデプロむしたドキュメントやリポゞトリはありたすか

私もそれに興味がありたす。 珟圚Fargateで実行しおいたすが、アプリを゚ッゞにプッシュするこずが次の論理的なステップになりたす。

HTML内で可胜な限りの改善を行いたしたが、サヌバヌの応答時間は非垞に長くなっおいたす。 :(

@hugglerこの䟋をcacheable-responseず組み合わせるこずができたす。 Redisたたはメモリ内キャッシュなどを䜿甚しお、htmlをキャッシュに保存できたす。 サヌバヌの応答時間を改善したす。

人々がnext.jsをcloudflareワヌカヌに正垞にデプロむしたドキュメントやリポゞトリはありたすか グヌグルをしおみたしたが、あたり芋぀かりたせんでした。 それは玠晎らしいでしょう。

@switz @ tills13 https://fab.dev/をチェックしたしたか 2020幎初頭に詊しおみたしたが、プレリリヌス状態でしたが、かなり遠いずころに来おいるようです。 それらを取り戻す制限の1぀はCloudflare自䜓でしたが、状況は今では倉わっおいる可胜性がありたす。

しばらく芋おいない。 再評䟡する必芁がありたす。 前回芋たずき、かなり深刻なトレヌドオフがありたした。

https://github.com/flareact/flareactにも泚目しおい

これに関する曎新はありたすか

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡