目次
データを受信すると、すぐにパーサーをセットアップして
defer
preload
CSS オブジェクト モデル (CSSOM) は、すべての CSS セレクターと、ツリーのルート ノード、兄弟、子孫、子、その他の関係を含むツリー形式の各セレクターの関連プロパティのマップです。 CSSOM はドキュメント オブジェクト モデル (DOM) に非常に似ています。どちらも重要なレンダリング パスの一部であり、Web サイトを適切にレンダリングするために実行する必要がある一連の手順です。
4.执行JavaScript
载入事件
5.合并DOM和CSSOM 构建渲染树
6. 计算布局和绘制
ホームページ ウェブフロントエンド htmlチュートリアル ブラウザがWebページをレンダリングする各ステップの仕組みを理解しましょう!

ブラウザがWebページをレンダリングする各ステップの仕組みを理解しましょう!

Nov 23, 2020 pm 05:45 PM
html フロントエンド

ブラウザがWebページをレンダリングする各ステップの仕組みを理解しましょう!

私の考え: 高速で信頼性の高い Web サイトを構築したい場合は、ブラウザーが Web ページをレンダリングする各ステップのメカニズムをよく理解し、各ステップを実行できるようにする必要があります。開発プロセスの最適化のステップ。この記事は、エンドツーエンドのプロセスについて私が学んだことを高レベルでまとめたものです。

さて、早速始めましょう。このプロセスは次の主な段階に分けることができます:

1. HTML の解析を開始します

2. 外部リソースを取得します

3. CSS を解析し、CSSOM

# を構築します##4. JavaScript を実行

##5. DOM と CSSOM を結合してレンダリング ツリーを構築

##6. レイアウトと描画を計算

##1. HTML の解析を開始

#ブラウザがネットワーク経由でページの

HTML

データを受信すると、すぐにパーサーをセットアップして

HTML

ドキュメント オブジェクト モデル (DOM) に変換します。 ドキュメント オブジェクト モデル (DOM) は、HTML および XML ドキュメントのプログラミング インターフェイスです。これは、文書の構造化された表現を提供し、プログラムから構造にアクセスして文書の構造、スタイル、コンテンツを変更する方法を定義します。 DOM はドキュメントを解析して、ノードとオブジェクト (プロパティとメソッドを含むオブジェクト) の構造化されたコレクションを作成します。簡単に言えば、Web ページをスクリプトまたはプログラミング言語に接続します。 解析プロセスの最初のステップは、HTML を

開始タグ
終了タグ、および

その コンテンツ タグ##に分解して表現することです。 # を選択すると、DOM を構築できます。 2. 外部リソースの取得

パーサーは外部リソース (CSS または JavaScript ファイルなど) を検出すると、これらのファイルを抽出します。 CSS ファイルの読み込み中もパーサーは実行を継続するため、リソースが読み込まれて解析されるまでページは表示されません (これについては後ほど説明します)。 ブラウザがWebページをレンダリングする各ステップの仕組みを理解しましょう!

JavaScript ファイルは少し異なります。デフォルトでは、パーサーは JS ファイルをロードし、HTML の解析をブロックしながらそれを解析します。この状況を軽減するには、

defer

async

という 2 つの属性をスクリプト タグに追加できます。どちらも JavaScript ファイルがバックグラウンドで読み込まれている間、パーサーを実行し続けることができますが、その方法が異なります。詳細については後ほど説明しますが、要約すると、

defer は、ドキュメントの解析が完了するまでファイルの実行が遅延されることを意味します。複数のファイルに defer

属性がある場合、ページが配置された順序で順次実行されます。

<script></script>
ログイン後にコピー
ログイン後にコピー
async は、ファイルがロード直後に実行されることを意味しますが、解析プロセス中または解析プロセス後に実行される可能性があるため、非同期スクリプトの実行順序は保証されません。
<script></script>
ログイン後にコピー
ログイン後にコピー
リソースのプリロード

<link>

要素

preload

rel 属性の属性値により、次のことが可能になります。 HTML ページの

要素内に宣言的なリソース取得リクエストを記述します。これにより、ページが読み込まれた直後にどのリソースが必要になるかを示すことができます。 すぐに必要なリソースについては、ページ読み込みの ライフ サイクルの早い段階でリソースの取得を開始し、ブラウザのメインのレンダリング メカニズムが介入する前にプリロードすることをお勧めします。このメカニズムにより、リソースがより早く読み込まれて利用可能になり、ページの初期レンダリングがブロックされる可能性が低くなり、パフォーマンスが向上します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;link&gt;</pre><div class="contentsignin">ログイン後にコピー</div></div>

3. CSS を解析して CSSOM を構築する

DOM については長い間知っていたかもしれませんが、

CSSOM ( CSS オブジェクト モデル)ブラウザがWebページをレンダリングする各ステップの仕組みを理解しましょう!十分に聞いていないかもしれませんが、とにかく数回聞いたことがありません。

CSS オブジェクト モデル (CSSOM) は、すべての CSS セレクターと、ツリーのルート ノード、兄弟、子孫、子、その他の関係を含むツリー形式の各セレクターの関連プロパティのマップです。 CSSOM はドキュメント オブジェクト モデル (DOM) に非常に似ています。どちらも重要なレンダリング パスの一部であり、Web サイトを適切にレンダリングするために実行する必要がある一連の手順です。

CSSOM は DOM と連携して

レンダリング ツリー を構築し、ブラウザはこれを使用して Web ページのレイアウトと描画を行います。

HTML ファイルや DOM と同様、CSS ファイルが読み込まれるときは、解析してツリー (今回は

CSSOM) に変換する必要があります。ページ上のすべての CSS セレクター、その階層、プロパティについて説明します。

CSSOM

は、段階的に構築できないという点で DOM と異なります。

CSS

ルールはその特殊性により個別に変更できるためです。 カバーするポイントが異なります。お互い。 これが、CSS がレンダリングをブロックする理由です。 すべての CSS が解析され、CSSOM が構築されるまで、ブラウザーは各要素が画面上のどこにあるかを知る方法がないからです。

4.执行JavaScript

不同的浏览器有不同的 JS 引擎来执行此任务。从计算机资源的角度来看,解析 JS 可能是一个昂贵的过程,比其他类型的资源更昂贵,因此优化它对于获得良好的性能是如此重要。

载入事件

加载的JS和DOM被完全解析并准备就绪后就会 emit document.DOMContentLoaded事件。 对于需要访问DOM的任何脚本,例如以某种方式进行操作或侦听用户交互事件,优良作法是在执行脚本之前先等待此事件。

document.addEventListener('DOMContentLoaded', (event) => {
    // 这里面可以安全地访问DOM了
});
ログイン後にコピー

在所有其他内容(例如异步JavaScript,图像等)完成加载后,将触发window.load事件。

window.addEventListener('load', (event) => {
    // 页面现已完全加载
});
ログイン後にコピー

ブラウザがWebページをレンダリングする各ステップの仕組みを理解しましょう!

5.合并DOM和CSSOM 构建渲染树

渲染树DOMCSSOM的组合,表示将要渲染到页面上的所有内容。 这并不一定意味着渲染树中的所有节点都将在视觉上呈现,例如,将包含opacity: 0visibility: hidden的样式的节点,并仍然可以被屏幕阅读器等读取,而display: none不包括任何内容。 此外,诸如之类的不包含任何视觉信息的标签将始终被忽略。

与 JS 引擎一样,不同的浏览器具有不同的渲染引擎。

ブラウザがWebページをレンダリングする各ステップの仕組みを理解しましょう!

6. 计算布局和绘制

现在我们有了完整的渲染树,浏览器知道了要渲染什么,但是不知道在哪里渲染。 因此,必须计算页面的布局(即每个节点的位置和大小)。 渲染引擎从顶部开始一直向下遍历渲染树,计算应显示每个节点的坐标。

完成之后,最后一步是获取布局信息并将像素绘制到屏幕上。

ブラウザがWebページをレンダリングする各ステップの仕組みを理解しましょう!

原文地址:https://dev.to/jstarmx/how-the-browser-renders-a-web-page-1ahc

作者:James Starkie

译文地址:https://segmentfault.com/a/1190000037650883

更多编程相关知识,请访问:编程学习课程!!

以上がブラウザがWebページをレンダリングする各ステップの仕組みを理解しましょう!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTMLの表の境界線 HTMLの表の境界線 Sep 04, 2024 pm 04:49 PM

HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

HTML のネストされたテーブル HTML のネストされたテーブル Sep 04, 2024 pm 04:49 PM

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML 左マージン HTML 左マージン Sep 04, 2024 pm 04:48 PM

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

HTML テーブルのレイアウト HTML テーブルのレイアウト Sep 04, 2024 pm 04:54 PM

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML入力プレースホルダー HTML入力プレースホルダー Sep 04, 2024 pm 04:54 PM

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML 内のテキストの移動 HTML 内のテキストの移動 Sep 04, 2024 pm 04:45 PM

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

HTML 順序付きリスト HTML 順序付きリスト Sep 04, 2024 pm 04:43 PM

HTML 順序付きリストのガイド。ここでは、HTML 順序付きリストと型の導入とその例についても説明します。

HTML の onclick ボタン HTML の onclick ボタン Sep 04, 2024 pm 04:49 PM

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。

See all articles