オーバーエンジニアリングが実際の問題を無視する場合
私のチームと私は、1 つの効率を最適化するのに苦労しました。私たちの SaaS 機能の中で、インフラストラクチャのコストを削減し、ローディングをスライスダウンして能力と同じくらい壮大な機会をレンダリングすることで、全体的な人間の能力を高めます。 多くの代替選択肢を検討し、さまざまなフレームワークを検討しました。 Server-Aspect Rendering は、私たちが特に重点を置いた戦術の 1 つでした。 このソリューションに関する提案を次に示します。 タイトルが示すように、この記事はひどく一方的なものであり、一方で私は能力と同じくらい距離のある完全な試みの情報に依存しようとしたため、もはや完全な信念の議論ではありません. )
今日、ネットアプリについて議論するとき、ほとんどの場合、JavaScript で書かれたユーティリティであり、入手可能な最も人気のあるフロントエンド フレームワークを利用します (
VueJS,
角度,
- そして、それは穏やかな壮大です。 完全な DOM は動的に構築されます。 これは、古いプログラム、100% 静的に生成されたアタッチ ページ、サーバー アスペクト、および未加工の出力をレンダリングするために必要なブラウザーのアタッチとの古典的な不公平をもたらします。 このサーバーとコンシューマー間の交互オフには、いくつかのよく知られた意味があります。
- 計算はほとんどブラウザで行われるようになり、さまざまな負荷がキル待ちから解放され、使用コストが削減され、処理できるネット ページ トラフィックの量
- 完全にインタラクティブなページを維持する能力であり、静的なページよりも壮大で深い人間の能力を持ちながら、連続するリロードを防ぎます.
- ページが生成されるとすぐに送信されなくなるため、serp とクローラーは余暇の貴重な情報をインデックスに登録しません (ただし、この叫び声は今では薄れている可能性がありますが、すべて
元のクローラーは JavaScript を実行する準備ができており 、ページがアサート マテリアルのインデックス作成の前にレンダリングされます).
効率性/UX: ページが完全な人に公開されるのを待って送信されなくなるという実際の事実により、読み込みに時間がかかる可能性があります。 特にネットワーク接続が悪い場合、または機器の計算リソースが制限されている場合。 後でそのレベルまで待ちます
- サーバー アスペクト レンダリング (SSR) として知られる最近のハイブリッド システムの 2 つの世界の中で最も優れたものを把握するために、ビルダーの見解を明らかにします。 その名前が示すように、ビューはサーバー上で最初にページをレンダリングし、それを送信してから、「ハイドレーション」と呼ばれるプロセスによってすべてのインタラクティブ性をページ内に取り込みます。 この種のクローラーは、インデックスに最適な簡単な HTML を調査し、ユーザーは表示される準備が整った自分のページをキャッチしますが、リアクティブ フレームワークによって導入されたすべての双方向性から静かな収入を得ます.
理論上は縦長に見えます。 それにもかかわらず、実際には、この方法論を強制しようとすると、完全なチームが何日も必要になる可能性があり、解決するために多くの複雑な問題が発生する可能性がある、最近の一連の課題に対処することができなくなります。 彼の記事
で, ステレオブースター
- は、あなたが取り組まなければならない問題の穏やかで正確なリストを作成します. 要約すると、次のものが wait on-kill でもシームレスに機能していることは明らかです:
- 動的情報取得元レンダリングの API または任意のネット サービス
- フロントキル ルーターまたは国際化 (i18n) ユーティリティの使用
- モデルのHMRの使い方
- 怠惰な部品の読み込み
のような暴露マネージャーの使用法redux または
これらのすべての人にとって、ライブラリ、ハック、または回避策はアクセス可能。 彼らは反対側にさまざまな境界を持っており、同様に、あなたは間違いなくそれらをあなたの支出ケースに適応させるのにかなりの時間を費やすでしょう. では、あなたのアプリにサーバー アスペクト レンダリングを実装することは、議論の余地のない事実であり、その価格でしょうか? この質問に反論するために、SSRが解決しようとする多くの欠点を介してさらに掘り下げましょう.
私としては、あらかじめ前述のとおり、SSR がなければ、ネット アサート マテリアルのインデックス作成は
Google
または Bing. ただし、これは間違いなく、進化していないさまざまなクローラーで発生する可能性があります。 そのレベルを修復しようとするよりも早く、最初に解決するのが最も好きな質問は次のとおりです。 実際には 必要検索エンジン最適化?
ネットベースのアプリを構築する必要がありますか?おそらく、このアプリは認証システムを介して動き回り、非公開のままにしておく必要がある個人情報を表示し、そのアサート マテリアルは最小ビット時間は人によって変動します。 そのような場合、後の質問は非常に簡単です.ページをインデックス化する自信さえある必要はありません(そしておそらく欲求と一致しません. より明示的な条件では、あなたは望むでしょう完全なユーザーに高い能力を提供しながら、ネットアサート素材(eコマース、公開プロファイルのリストなど)をインデックス化します。 それにもかかわらず、SSR を自分で実装することは、もはや基本的に最も便利なリスクではありません。 のように、いくつかの単純な待機オンキル ソリューションが無料で入手可能です。 Pupeteer。 簡単なトリックは、通常とは異なる顧客がロボットであるかどうかを確認することです。ロボットである場合は、大量の未加工の HTML を送信する前にアプリを事前にレンダリングします。 SaaS の企業や製品でも、このアクティビティを許可することができます
prerender.io. ご要望に応じて仲介して頂くお値段になりますより哲学的なレベルの見方では、クローラーのために動的にレンダリングされたページをインデックス化する準備ができていることは、今や足を引っ張る方法です.そしてほぼ前提。 快適さ、生産性、およびそれがもたらす総合的な利点のために、この種の正味の主張材料がますます作成されています. Google のような検索エンジンは、競争力を維持するために、その世界のパターンに適応しなければなりません。 ですから、進化の遅いロボットの fortify を強化するために長い時間を費やすことは、環境を IE8 に効果的に一致させているようなものですよね?
このフェーズは、機器ごとにかなり異なり、それぞれのネットワークの品質と効率に依存するため、決定を下すには少し高度です。 Firebaseチームは実際に魅力的でした
- ビデオのコレクション SSR の知名度とダイアグラムが劇的に向上することについて語っています。アプリの効率と反応性。 しかし、別の角度からそれを仲介するとしたら、どのような行為を学ぶのでしょうか? ページの読み込み回数を改善するという点で、最も手軽な 3 つの KPI のトピックです。 FP
、 また 初塗装
、これはブラウザが実際に人に何かを表示するのにかかる時間です。
FCP、 また 初めてのコンテンツペイント
は、ページと重要な情報がユーザーに表示されるまでの時間です。 そして遅かれ早かれ、
TTFI、 また Time To First Interplay- は、ユーザーがページとの対話 (ボタンのクリック、ナビゲーションなど) を行えるようになった時間です。
これらの KPI をウェブログ インスタンスで説明してみましょう。 最小限のページ (HTML) とそのリソース (CSS) が完全に読み込まれるまで、ユーザーがそのウェブログをナビゲートするとすぐに、ブラウザーは白いディスプレイ マスクを表示します。 この長さは最初のペイントに対応します。 反対に、その時点以降のブログの記事全体を調査できることはもはや指摘されていません。 この環境は、今のところ限られたローダーを表示するのが最も便利であり、それらの記事が静かにロードされていることを人に示唆しています. その後すぐに、JavaScript が処理され、DOM がレンダリングされ、たとえばメニューを操作できるようになりました。 それは最初のインタープレイの時間です。 記事が遅かれ早かれ読み込まれると、ページにマークアップされます。 見た人が見た瞬間に発行する初めてのコンテンツペイントです
調査できるように、ページ読み込み時の UX を改善することは、通常、キルパーソンが調査できるように、あらゆる形式の KPI を能力と同じくらい大きく改善することで と は、 デモンストレーションにさらに手を加えて、2 つの同一のアプリの短いシミュレーションを作成しましょう。 バリエーションを明確に強調するために、ネットワークの質問が満たされるまでに 1 秒かかることをお勧めします (実際には、10 ミリ秒近くになるか、より深いサルベージ 22 状況を取得するため、SSR はおそらくあなたのものではない可能性があります)。優先順位 ;))。 ブラウザのレンダリング時間 (JavaScript の解析、DOM のマウント) は 0.5 秒です。 私たちのアプリは、1 つの CSS ファイル、3 つの JavaScript リソース (当面は HTTP 2.0 から取得されます) から収集され、2 つの同期 API 呼び出しを行って関連情報 (個人情報と彼のウェブログ投稿) を取得します。 )
- SSRなしのネットアプリ
上図より、次のラベルを付けることができます:
- SSRあり 、API 呼び出しが wait on-kill で実行されるため、ページの読み込みに非常に長い時間がかかります、消費者に応答を送信する前に。 その時点のあるレベルでは、人を殺すことは、聖霊の前で非常に準備ができています e マスクを表示します。 繰り返しになりますが、すべての小さなものが読み込まれるとすぐに、意図的なアサート マテリアルが SSR なしよりも早く表示されます。 TTFI に関しては、すべてのリソースが必要であり、DOM をハイドレートする必要があるため、ユーザーは完全なページを表示しますが、2.5 秒間操作できなくなります。 アプリが扱いにくく、ラグがあり、摩擦が発生する可能性があります.
- SSRなし、ページの読み込みはより速く (実際には 2 倍)、最も便利です。ローダーの表示 / スプラッシュ ディスプレイ マスク / 起動時に HTML ページ内にトピックがなく、JavaScript が完全に読み込まれて解釈されるまで 2.5 秒間。 その時点で、ユーザーは実際に UI を操作できますが、魅力的なアサート マテリアルは表示されません。 SSRより2.5秒遅れて意味深なアサート素材が登場。 反対に、関連する UI パーツを表示することで、アプリがペイロードの準備ができていることをユーザーに知らせるウィンドウが表示されます 。
- 過ごすための 1 つのクロージング ファクターSSR を使用すると、サーバーの HTML 応答によって重要な追加のオーバーヘッドが発生し、読み込み時間が大幅に長くなる可能性があることが示唆されています。 確かに、HTML は完全に生成された DOM を含んでいますが、DOM ハイドレーションを作成するために JSON レイアウトにも同じ情報をぶら下げます。 Weblog のインスタンスを待機すると、主な質問によって返されたページが HTML 形式の Weblog 投稿
JavaScript で解析されるように準備された、投稿の JSON リスト。 また、同様に、公開管理フレームワークを利用する必要があります.- をハングするようになります。 と
- 過ごすための 1 つのクロージング ファクターSSR を使用すると、サーバーの HTML 応答によって重要な追加のオーバーヘッドが発生し、読み込み時間が大幅に長くなる可能性があることが示唆されています。 確かに、HTML は完全に生成された DOM を含んでいますが、DOM ハイドレーションを作成するために JSON レイアウトにも同じ情報をぶら下げます。 Weblog のインスタンスを待機すると、主な質問によって返されたページが HTML 形式の Weblog 投稿
さらに、前述の 2 つの重要な問題に加えて、ビルダーが SSR を促進する際に実際には話さない人物がもう 1 人いる可能性があります。複雑。
- アプリを待機オンキルで動作させるため、より重要で複雑なインフラストラクチャを積極的に望むでしょう。セキュリティと機能の方法によって多くの意味があります.
- サーバーは、(ページをレンダリングするために必要な計算リソースに起因する) 転送よりもはるかに少ないネット ページ トラフィックを処理する準備ができている可能性が高く、コストが増加します.
私は、YAGNI、または「あなたはそれを必要としません」, 特に地図工学では、それは完全に理にかなっているからです. ビルダーは、技術的な成功自体のために、最近の問題を発見し、それらを見事に解決する義務的なものとフレームワークをコーディングすることを賞賛します。 SSRもその中の一つであると仲介します。 実際の問題について自由なレベルの興味を持たせます ユーザー 。 これは、無限の議論をもたらし、この形式の限られた ROI のために非常に壮大な時間を費やすもう 1 つの技術的サルベージ 22 状況です. この記事で私が行った結論に強く反対する可能性が高い可能性があります。 おそらく、いくつかの魅力的な機能を無視しており、それらに焦点を当てるのは難しいので、自由にコメントを追加してください! 実際のトピックとして、論争は業界内で解決されていないままです. 大企業は自社のプラットフォーム(Netflix、Fb、Quora に相当)に SSR を活用しています。 他のものはもうありません (Youtube、Twitter、Slack)。 一部の人は、(Amazon やウィキペディアのように) 最もよく知られている JavaScript のタッチと組み合わせて、完全に時代遅れの静的レンダリングに頼るだけでなく、ある程度のレベルでは正直な解決策にもなり得ます. あらゆる些細なことにもかかわらず、アプリのサーバー アスペクト レンダリングを探索することに惹かれるに違いありません。基本的に最もおすすめしたいのは、利用可能なフレームワークを提供する開始者が好き:
- NextJS、React エコシステムの場合
- NuxtJS、VueJS コミュニティ用
- サーバーは、(ページをレンダリングするために必要な計算リソースに起因する) 転送よりもはるかに少ないネット ページ トラフィックを処理する準備ができている可能性が高く、コストが増加します.
SSR を有効にするには、アプリの巨大なフェーズを 100% に書き換える必要があります
同型
(ただし、それを完全に制定することはありません)。 アプリのさまざまな側面を改善したり、さまざまなプログラムに集中して効率を高めたりするには、長い時間がかかります。
- サーバー アスペクト レンダリング (SSR) として知られる最近のハイブリッド システムの 2 つの世界の中で最も優れたものを把握するために、ビルダーの見解を明らかにします。 その名前が示すように、ビューはサーバー上で最初にページをレンダリングし、それを送信してから、「ハイドレーション」と呼ばれるプロセスによってすべてのインタラクティブ性をページ内に取り込みます。 この種のクローラーは、インデックスに最適な簡単な HTML を調査し、ユーザーは表示される準備が整った自分のページをキャッチしますが、リアクティブ フレームワークによって導入されたすべての双方向性から静かな収入を得ます.