検索
ホームページウェブフロントエンドhtmlチュートリアルWeb パフォーマンス最適化の「単純な」理論と実践 summary_html/css_WEB-ITnose

ズバリとは何ですか?どのようなパフォーマンスの最適化ですか?この記事では、ブラウザに URL を入力してから最終ページが表示されるまでのプロセスを段階的に分析し、Mobile Q Web での実際のアプリケーションの実践をまとめます。

モード 1 – よく使用されるモード

ユーザーが URL を入力してから最終ページを表示するまでのプロセス、このモードは単純に次の 5 つの部分に分けることができます

  1. ユーザーが URL を入力し、静的ページのプルを開始します
  2. 静的ページがロードされた後、ドキュメントタグを解析し、CSSのプルを開始します(通常、CSSは先頭に配置されます)
  3. 次にJSファイルをプルします(通常、JSファイルは最後に配置されます)
  4. JS がロードされ、JS コンテンツの実行が開始され、リクエストを行ってデータにアクセスします
  5. データとリソースをページにレンダリングして最終的な表示効果を取得します

具体的なフローチャートは次のとおりです

この形式の処理が大部分を占めるはずですが、前後に巨大な依存関係が存在するという問題も簡単に見つかります。たとえば、データ リクエストは JS のロード後にのみ開始する必要があります。ユーザーは、最終ページを表示する前にデータが戻るまで待つ必要があるため、アプリケーション全体の最初の画面のレンダリングに時間がかかります。

モード 2 – データが直接出力されます

モード 1 では、ユーザーがポイント 1 で URL を入力すると、サーバーは他の処理を行わずに直接 HTML を返し、ポイント 4 でサーバーにデータをリクエストします。次に、ポイント 1 でリクエスト データをサーバーに配置し、取得したデータを HTML に結合して返すと、フロントエンド ページでのデータ リクエスト時間が計算されます。削減。 これがモード 2 - データ直接出力の動作であり、処理方法も非常に簡単です

    ユーザーが URL を入力し、サーバーが HTML を返す前に、ページに必要なデータをリクエストします
  1. データを結合しますHTML を編集し、一緒にフロントエンドに返します (スクリプト タグを挿入してグローバル変数にデータを追加したり、)
  2. フロントエンドのJSコードではサーバー側でデータが取得できたかどうかを判断し、データを作成せずにそのデータを使って直接ページを描画しますrequest
以下の具体的なフローチャートは、このモードで見ることができます

このモードは、モード 1 と比較して、データをリクエストする際の 2 つのモード間の時間の違いを削減します。このギャップはどのくらいの大きさですか?

HTTP ネットワーク リクエスト プロセスを開始します

DNS解析(100~200ms可以缓存)         |         |        建立TCP链接 (三次握手100~200ms )                |                |            HTTP Request( 半个RTT )                    |                   |              HTTP Response( RTT 不确定优化空间 )

注: RTT はラウンドトリップ時間の略称で、データ パケットが送り返されるまでにかかる時間を意味します。

HTTP リクエストはフロントエンドとバックエンドで発行されます。その違いは何ですか?

上記の HTTP ネットワーク リクエスト プロセスから、完全なリクエスト リターンの確立には、特に外部ネットワーク ユーザーが HTTP リクエストを行う場合、ネットワークやその他の要因の影響により、ネットワーク接続と送信に明らかに時間がかかることがわかります。提督は多くの時間を費やしました。サーバー側でデータを取得する場合、それが HTTP リクエストであっても、バックエンドは同じイントラネット上にあるため、送信は非常に効率的です。これがギャップの主な原因であり、最適化が急務です。

モード 3 – ダイレクトアウト (サーバー側レンダリング)

モード 2 は、ロードされる JS ファイルに依存するデータリクエストをサーバーに移動し、データは HTML とともに返されます。次に、JS ファイルがロードされるのを待ちます。JS はサーバーから提供されたデータを HTML と組み合わせて、最終的なページ ドキュメントを生成します。

データリクエストはサーバー上で行うことができ、データとHTMLの組み合わせ処理もサーバー上で実行できるため、JSファイルの読み込みの待ち時間が短縮されます。 これはモード 3 - ダイレクトアウト (サーバーサイドレンダリング) で、主な処理は次のとおりです

    サーバー上のデータを取得し、そのデータをページテンプレートと組み合わせて、サーバー上で最終的な HTML にレンダリングします
  1. 最終的な HTML 表示を返します
はい 下の図からわかるように、ページの最初の画面表示は JS ファイルが戻ってくるのを待つ必要がなくなり、今回の最適化は減少しました

上記のモードでは、モード 1 の時間のかかるポイント 3 と 4 の共通モードが削除されています。 最適化。最適化を続行できますか?ページ ドキュメントが大きくない場合は、CSS を HTML にインライン化することができ、これはリクエストの数を最適化する方法です。考慮すべき少し異なる点は、サーバーによって最終的にレンダリングされるドキュメントのサイズです。この範囲内で、CSS ファイルを HTML にインライン化することもできます。この場合、以下に示すように CSS の取得時間が最適化されます

概要

ズバリ、HTML リクエストが 1 つだけ残るまで共通モードを最適化し、最初の画面のレンダリング時間を高速化し、サーバーサイドを使用します。レンダリングに加えて、フロントエンドのレンダリングも最適化します。克服できない SEO の問題です。単純なデータの直接出力であっても、サーバー側のレンダリングによる直接出力であっても、ページのパフォーマンスの最適化を大幅に改善できることを実際のアプリケーションで説明します。

モバイル QQ ホームスクール グループのデータ直接エクスポートの最適化を例に挙げます

プロジェクトをオンラインにするまでの時間が限られていたため、最初の最適化では、最初の画面を最適化するための単純なデータ直接エクスポートの方法が使用されました。レンダリング時間。具体的な処理はモード 2 のデータ直接エクスポート方式と一致していますが、AlloyTeam が開発した KOA ベースの Xuanwu 直接エクスポート サービスがフロントエンドとサーバーの間の中間層として使用される点が異なります。フォームは次のとおりです

この中間層メソッドを使用すると、プロジェクトの開発中もフロントエンドとバックエンドの分離メソッドを使用できます。開発後も、ページリクエストはこの中間層サービスに送信されます。 。中間層サービスは主に上記モード2のデータ直接エクスポートの処理を行います

  1. フロントエンドファイルを使用し、サーバーが用意したプルデータインターフェースを呼び出す
  2. データをフロントエンドファイルと結合して返す中間層サービスは特定のサーバーと同じイントラネット上にデプロイされているため、直接のデータ対話は非常に効率的であり、これによりモード 2 - データ直接出力で説明されている最適化が達成されます。もう 1 つのポイントは、中間層の Xuanwu 直接発信サービスとして、同社の L5 負荷分散サービスを通じて、直接発信バージョンと非直接発信バージョンとの完全な互換性があり、たとえ直接発信サービスに障害が発生した場合でも、非直接発信サービスを引き続き使用できることです。基本的なユーザー エクスペリエンスを確保し、A/BTest をより適切にサポートできるように、スムーズに送信バージョンを直接送信します。
  3. パフォーマンス データ

単純なデータの直接エクスポートでも、最適化前のバージョンと比較して、モバイル Q のホームスクール グループ リスト ページのレンダリング完了時間が 650 ミリ秒速くなり、パフォーマンスが約向上しました。 35%。

概要

フロントエンドとバックエンドが分離されていない場合にバックエンドを使用してテンプレートをレンダリングする方法は、フロントエンドとバックエンドが分離された後は、この記事で説明されている直接出力ソリューションと一致します。 Node の開発により、より多くのフロントエンドがバックエンドの処理を実行し始めており、直接的なアプローチがますます注目を集めています。

歴史の車輪は前進しています。 直接的な解決策はサーバーサイドレンダリングの原点に戻ったように見えますが、実際には以前の解決策に基づいて上昇傾向にあります。能力が高まると、思考力も高まります。フロントエンドはますます強力になることが予想されます。いいえ、react-native を使用すると、フロントエンドがクライアント上で動作できるようになります~

追記

モバイル Q ホーム スクール グループは React + Redux + を使用しています。 Webpack アーキテクチャであるため、無視してはなりません。

React 同型性

(サーバーサイド レンダリング) React 同型性の具体的な実践については、クリックして Web パフォーマンスの最適化をご覧ください。サーバーサイドレンダリング React はまさに同形です

記事の冒頭で述べたフロントエンドルーティングについては、ルーティングの実装原理に興味がある場合は、クリックしてフロントエンドルーティングの実装とreact-routerを表示することもできますソースコード分析 アドバイスありがとうございます!

著者について: joeyguo

Tencent AlloyTeam フロントエンド er 個人ホームページ · 私の記事 ·

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
HTML、CSS、およびJavaScriptの未来:Web開発動向HTML、CSS、およびJavaScriptの未来:Web開発動向Apr 19, 2025 am 12:02 AM

HTMLの将来の傾向はセマンティクスとWebコンポーネントであり、CSSの将来の傾向はCSS-in-JSとCSShoudiniであり、JavaScriptの将来の傾向はWebAssemblyとServerLessです。 1。HTMLセマンティクスはアクセシビリティとSEO効果を改善し、Webコンポーネントは開発効率を向上させますが、ブラウザの互換性に注意を払う必要があります。 2。CSS-in-JSは、スタイル管理の柔軟性を高めますが、ファイルサイズを増やす可能性があります。 CSShoudiniは、CSSレンダリングの直接操作を可能にします。 3. Webassemblyブラウザーアプリケーションのパフォーマンスを最適化しますが、急な学習曲線があり、サーバーレスは開発を簡素化しますが、コールドスタートの問題の最適化が必要です。

HTML:構造、CSS:スタイル、JavaScript:動作HTML:構造、CSS:スタイル、JavaScript:動作Apr 18, 2025 am 12:09 AM

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。1。HTMLは、Webページ構造を定義し、2。CSSはWebページスタイルを制御し、3。JavaScriptは動的な動作を追加します。一緒に、彼らは最新のウェブサイトのフレームワーク、美学、および相互作用を構築します。

HTMLの未来:ウェブデザインの進化とトレンドHTMLの未来:ウェブデザインの進化とトレンドApr 17, 2025 am 12:12 AM

HTMLの将来は、無限の可能性に満ちています。 1)新機能と標準には、より多くのセマンティックタグとWebComponentsの人気が含まれます。 2)Webデザインのトレンドは、レスポンシブでアクセス可能なデザインに向けて発展し続けます。 3)パフォーマンスの最適化により、応答性の高い画像読み込みと怠zyなロードテクノロジーを通じてユーザーエクスペリエンスが向上します。

HTML対CSS対JavaScript:比較概要HTML対CSS対JavaScript:比較概要Apr 16, 2025 am 12:04 AM

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。HTMLはコンテンツ構造を担当し、CSSはスタイルを担当し、JavaScriptは動的な動作を担当します。 1。HTMLは、セマンティクスを確保するためにタグを使用してWebページの構造とコンテンツを定義します。 2。CSSは、セレクターと属性を介してWebページスタイルを制御して、美しく読みやすくします。 3。JavaScriptは、動的でインタラクティブな関数を実現するために、スクリプトを通じてWebページの動作を制御します。

HTML:それはプログラミング言語か何か他のものですか?HTML:それはプログラミング言語か何か他のものですか?Apr 15, 2025 am 12:13 AM

htmlisnotaprogramminglanguage; itisamarkuplanguage.1)htmlStructuresandformatswebcontentusingtags.2)ItworkswithcsssssssssdjavascriptforInteractivity、強化を促進します。

HTML:Webページの構造の構築HTML:Webページの構造の構築Apr 14, 2025 am 12:14 AM

HTMLは、Webページ構造の構築の基礎です。 1。HTMLは、コンテンツ構造とセマンティクス、および使用などを定義します。タグ。 2. SEO効果を改善するために、などのセマンティックマーカーを提供します。 3.タグを介したユーザーの相互作用を実現するには、フォーム検証に注意してください。 4. JavaScriptと組み合わせて、動的効果を実現するなどの高度な要素を使用します。 5.一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれ、検証ツールが必要です。 6.最適化戦略には、HTTP要求の削減、HTMLの圧縮、セマンティックタグの使用などが含まれます。

テキストからウェブサイトへ:HTMLの力テキストからウェブサイトへ:HTMLの力Apr 13, 2025 am 12:07 AM

HTMLは、Webページを構築するために使用される言語であり、タグと属性を使用してWebページの構造とコンテンツを定義します。 1)htmlは、などのタグを介してドキュメント構造を整理します。 2)ブラウザはHTMLを分析してDOMを構築し、Webページをレンダリングします。 3)マルチメディア関数を強化するなど、HTML5の新機能。 4)一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれます。 5)最適化の提案には、セマンティックタグの使用とファイルサイズの削減が含まれます。

HTML、CSS、およびJavaScriptの理解:初心者向けガイドHTML、CSS、およびJavaScriptの理解:初心者向けガイドApr 12, 2025 am 12:02 AM

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境