フロントエンドのパフォーマンス最適化を学ぶためのhtmlページのレンダリングプロセスの理解
2022-01-16 12:29:20
最近、フロントエンドのパフォーマンス最適化について学んでいるのですが、パフォーマンスのボトルネックがどこにあるのかを知るためには、ページのレンダリングプロセスを理解することが必要なのだそうです。ここでは、私が見たことのあるものをいくつか紹介し、共有します。
参考にしてください。レンダラーを理解する
このページは、以下の機能でレンダリングされます。
-シングルスレッド・イベント・ポーリング
-定義された、連続した、秩序ある操作(HTML5)
-DOMツリーの分割と構築
-リソースの要求とプリロード
-レンダーツリーの構築とページの描画
具体的には : その
DOM ツリーは、対応する HTML のバイトをウェブから取得したときに構築し始めます。これは、UIを更新するブラウザのスレッドによって処理されます。DOM ツリーの構築は、以下のような場合にブロックされます。
-HTMLレスポンスストリームがネットワークでブロックされる
-ロードされていないスクリプトがあります
-script ノードに遭遇したが、この時点ではまだアンロードされたスタイル ファイルが存在する。
レンダー ツリーは DOM ツリーから構築されるため、スタイル ファイルによってブロックされることになります。
シングルスレッド イベント ポーリングに基づいているため、スクリプトやスタイルのブロックがない場合でも、それらのスクリプトやスタイルが解析、実行、適用されると、ページのレンダリングがブロックされます。
ページ描画をブロックしないケースもある
-のdefer属性とasync属性で指定します。
-メディアタイプが一致しないスタイルファイル
-パーサーで挿入されたスクリプト ノードまたはスタイル ノードがない。
ここで、説明のための例を示します(フルコード)。 : は
<html>
<body>
<link rel="stylesheet" href="example.css">
<div>Hi there!</div>
<script>
document.write('<script src="other.js"></scr' + 'ipt>');
</script>
<div>Hi again!</div>
<script src="last.js"></script>
</body>
</html>
コードは見やすくわかりやすく、ブラウザに入れて開けばすぐに目的のページが表示されます。ここでは、スローモーション再生を使って、実際にどのようにレンダリングされるかを見てみましょう。
<html>
<body>
<link rel="stylesheet" href="example.css">
<div>Hi there!</div>
<script>...
まず、パーサーはexample.cssに出会い、それをネットワークからダウンロードします。スタイルシートのダウンロードには時間がかかりますが、パーサーはブロックされず、ページの解析を続行します。次に、パーサーは script タグに遭遇しますが、スタイル ファイルが読み込まれていないため、script がブロックされます。パーサーはブロックされ、解析を続行することができません。
レンダー ツリーもスタイル ファイルによってブロックされるため、この時点でページをレンダリングするブラウザはなく、つまり example.css ファイルがダウンロードされないと、Hi there!
次に、続けます。
<html>
<body>
<link rel="stylesheet" href="example.css">
<div>Hi there!</div>
<script>
document.write('<script src="other.js"></scr' + 'ipt>');
</script>
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...] [...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...] [...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...] [...] [...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...] [...] [...] [...] [...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...] [...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...] [...] [...] [...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...] [...]
[...]
[...]
[...]
[...]
[...] [...] [...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
参考にしてください。レンダラーを理解する
このページは、以下の機能でレンダリングされます。
-シングルスレッド・イベント・ポーリング
-定義された、連続した、秩序ある操作(HTML5)
-DOMツリーの分割と構築
-リソースの要求とプリロード
-レンダーツリーの構築とページの描画
具体的には : その
DOM ツリーは、対応する HTML のバイトをウェブから取得したときに構築し始めます。これは、UIを更新するブラウザのスレッドによって処理されます。DOM ツリーの構築は、以下のような場合にブロックされます。
-HTMLレスポンスストリームがネットワークでブロックされる
-ロードされていないスクリプトがあります
-script ノードに遭遇したが、この時点ではまだアンロードされたスタイル ファイルが存在する。
レンダー ツリーは DOM ツリーから構築されるため、スタイル ファイルによってブロックされることになります。
シングルスレッド イベント ポーリングに基づいているため、スクリプトやスタイルのブロックがない場合でも、それらのスクリプトやスタイルが解析、実行、適用されると、ページのレンダリングがブロックされます。
ページ描画をブロックしないケースもある
-のdefer属性とasync属性で指定します。
-メディアタイプが一致しないスタイルファイル
-パーサーで挿入されたスクリプト ノードまたはスタイル ノードがない。
ここで、説明のための例を示します(フルコード)。 : は
コピーコード
コードは以下の通りです。
<html>
<body>
<link rel="stylesheet" href="example.css">
<div>Hi there!</div>
<script>
document.write('<script src="other.js"></scr' + 'ipt>');
</script>
<div>Hi again!</div>
<script src="last.js"></script>
</body>
</html>
コードは見やすくわかりやすく、ブラウザに入れて開けばすぐに目的のページが表示されます。ここでは、スローモーション再生を使って、実際にどのようにレンダリングされるかを見てみましょう。
コピーコード
コードは以下の通りです。
<html>
<body>
<link rel="stylesheet" href="example.css">
<div>Hi there!</div>
<script>...
まず、パーサーはexample.cssに出会い、それをネットワークからダウンロードします。スタイルシートのダウンロードには時間がかかりますが、パーサーはブロックされず、ページの解析を続行します。次に、パーサーは script タグに遭遇しますが、スタイル ファイルが読み込まれていないため、script がブロックされます。パーサーはブロックされ、解析を続行することができません。
レンダー ツリーもスタイル ファイルによってブロックされるため、この時点でページをレンダリングするブラウザはなく、つまり example.css ファイルがダウンロードされないと、Hi there!
次に、続けます。
コピーコード
コードは以下の通りです。
<html>
<body>
<link rel="stylesheet" href="example.css">
<div>Hi there!</div>
<script>
document.write('<script src="other.js"></scr' + 'ipt>');
</script>
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
htmlでvue-routerを使用するためのサンプルコード
-
html+css レスポンシブカードホバー効果用
-
div+css3を使用したグラデーション背景のボタンのコード例
-
html フォームコントロールの disabled プロパティ readonly と disabled の比較
-
htmlのタイトル、段落、改行、横線、特殊文字について語る
-
html フォーム属性の readonly と disabled を使用する方法
-
HTML中国語文字エンコーディング標準紹介
-
HTML+CSS の相対幅と絶対幅が競合する場合、div ソリューションの場合
-
htmlフレーム、Iframe、Framesetの違いについて
-
あまり使われないけど便利なXhtmlタグ