ホームページ >ウェブフロントエンド >htmlチュートリアル >Web パフォーマンス最適化の「単純な」理論と実践 summary_html/css_WEB-ITnose
ズバリとは何ですか?どのようなパフォーマンスの最適化ですか?この記事では、ブラウザに URL を入力してから最終ページが表示されるまでのプロセスを段階的に分析し、Mobile Q Web での実際のアプリケーションの実践をまとめます。
ユーザーが URL を入力してから最終ページを表示するまでのプロセス、このモードは単純に次の 5 つの部分に分けることができます
具体的なフローチャートは次のとおりです
この形式の処理が大部分を占めるはずですが、前後に巨大な依存関係が存在するという問題も簡単に見つかります。たとえば、データ リクエストは JS のロード後にのみ開始する必要があります。ユーザーは、最終ページを表示する前にデータが戻るまで待つ必要があるため、アプリケーション全体の最初の画面のレンダリングに時間がかかります。
モード 2 – データが直接出力されます
このモードは、モード 1 と比較して、データをリクエストする際の 2 つのモード間の時間の違いを削減します。このギャップはどのくらいの大きさですか?
HTTP ネットワーク リクエスト プロセスを開始します
DNS解析(100~200ms可以缓存) | | 建立TCP链接 (三次握手100~200ms ) | | HTTP Request( 半个RTT ) | | HTTP Response( RTT 不确定优化空间 )
注: RTT はラウンドトリップ時間の略称で、データ パケットが送り返されるまでにかかる時間を意味します。
HTTP リクエストはフロントエンドとバックエンドで発行されます。その違いは何ですか?
モード 3 – ダイレクトアウト (サーバー側レンダリング)
データリクエストはサーバー上で行うことができ、データとHTMLの組み合わせ処理もサーバー上で実行できるため、JSファイルの読み込みの待ち時間が短縮されます。 これはモード 3 - ダイレクトアウト (サーバーサイドレンダリング) で、主な処理は次のとおりです
上記のモードでは、モード 1 の時間のかかるポイント 3 と 4 の共通モードが削除されています。 最適化。最適化を続行できますか?ページ ドキュメントが大きくない場合は、CSS を HTML にインライン化することができ、これはリクエストの数を最適化する方法です。考慮すべき少し異なる点は、サーバーによって最終的にレンダリングされるドキュメントのサイズです。この範囲内で、CSS ファイルを HTML にインライン化することもできます。この場合、以下に示すように CSS の取得時間が最適化されます
概要
プロジェクトをオンラインにするまでの時間が限られていたため、最初の最適化では、最初の画面を最適化するための単純なデータ直接エクスポートの方法が使用されました。レンダリング時間。具体的な処理はモード 2 のデータ直接エクスポート方式と一致していますが、AlloyTeam が開発した KOA ベースの Xuanwu 直接エクスポート サービスがフロントエンドとサーバーの間の中間層として使用される点が異なります。フォームは次のとおりです
この中間層メソッドを使用すると、プロジェクトの開発中もフロントエンドとバックエンドの分離メソッドを使用できます。開発後も、ページリクエストはこの中間層サービスに送信されます。 。中間層サービスは主に上記モード2のデータ直接エクスポートの処理を行います
単純なデータの直接エクスポートでも、最適化前のバージョンと比較して、モバイル Q のホームスクール グループ リスト ページのレンダリング完了時間が 650 ミリ秒速くなり、パフォーマンスが約向上しました。 35%。
概要
フロントエンドとバックエンドが分離されていない場合にバックエンドを使用してテンプレートをレンダリングする方法は、フロントエンドとバックエンドが分離された後は、この記事で説明されている直接出力ソリューションと一致します。 Node の開発により、より多くのフロントエンドがバックエンドの処理を実行し始めており、直接的なアプローチがますます注目を集めています。
追記
モバイル Q ホーム スクール グループは React + Redux + を使用しています。 Webpack アーキテクチャであるため、無視してはなりません。
React 同型性記事の冒頭で述べたフロントエンドルーティングについては、ルーティングの実装原理に興味がある場合は、クリックしてフロントエンドルーティングの実装とreact-routerを表示することもできますソースコード分析 アドバイスありがとうございます!
著者について: joeyguo