検索
ホームページウェブフロントエンドhtmlチュートリアルフロントエンドのパフォーマンス最適化の学習に備えて、HTML ページのレンダリング プロセスを理解する (続き)_HTML/Xhtml_Web ページの制作

昨夜、ブラウザのレンダリングプロセスについてエッセイを書きましたが、それはブラウザのテストに合格することができず、不完全な部分が多くありました。ブラウザでテストし、テスト結果を全員と共有しました。テストのプロセスは少し面倒かもしれませんが、皆さんにご理解いただければ幸いです。

テスト ブラウザ: Chrome v24.0.1312.52 m、Firefox v18.0、Opera v12.12。

WebKit カーネルでは、Web ページが表示されると、パーサー (Parser) が HTML ドキュメントを解析し、レンダリング ツリー (Render Tree) を生成し、最後にページをレンダリングします。これはスレッド内で実行されるため、この 2 つは同時に実行されません。

以下の 2 つの状況に分けて、それぞれ異なるブラウザでテストしました。

スタイル ファイルは先頭にあり、他の 2 つのスクリプト ファイルは本文の先頭に、もう 1 つは本文の最後にあります。スタイルファイルは本文の先頭にあり、スクリプトファイルの場所は上記と同じです。

テストの結果は次のとおりです。Chrome ではスタイル ファイルの場所が画像のダウンロード時間に影響しますが、他の 2 つのブラウザでは 2 つの状況に違いはありません。以下に詳細なテストプロセスを示します。

テスト 1: スタイル ファイルはヘッドにあり、他の 2 つのスクリプト ファイルは本文の先頭に、もう 1 つは本文の最後にあります。

テストされたコード:

コードをコピー
コードは次のとおりです:




テストページ




こんにちは!





こんにちは!

マルクス
エンゲルス
レーニン





1. Chrome でのテスト

ブラウザでページを開いた後、以下に示すように、すぐに Web ページのスクリーンショットを撮りました (クリックすると拡大画像が表示されます。以下も同様です):

上の図からわかるように、test.htm ドキュメントはロードされており、example.css は保留状態ですが、下部の last.js はロードされています。これは、Chrome が事前にロード、ダウンロードされ、ブラウザのキャッシュに配置されていることを示しています。 last.js はロードされていますが、その前にあるスタイル ファイルがスクリプトの実行をブロックするため、まだ実行されていません。

次に、example.css が読み込まれると、画面に Hi there! が表示され、ブラウザのスクリーンショットは次のようになります :

ネットワーク リクエストから、example.css がロードされ、other.js が保留状態になっていることがわかります。ただし、この時点で script タグの下にある 3 つのイメージがダウンロードされています。プリロード機能へ。ただし、ブラウザのレンダリングが other.js スクリプトによってブロックされているため、これら 3 つの画像とその上の「こんにちは」は表示されません。また、last.js 内のコードはまだ実行されていません。

次に、other.js が読み込まれると、ブラウザはレンダリング ツリーを構築し、「こんにちは」と表示し、画像を表示します。 last.jsは事前にダウンロードされているので、すぐにlast.jsが実行されます。レンダリングプロセス全体が完了しました。以下に示すように:

このことから、Chrome が本体内のスクリプト リソースをプリロードすることがわかります (スタイル ファイルはテストされていません)。JavaScript スクリプトによって動的にロードされる JS は、画像ファイルのダウンロードには影響しませんが、影響は及ぼします。その下の画像のレンダリング。

2. Firefox でのテスト結果

以下に示すように、Firefox でページを開いた後、すぐにスクリーンショットを撮ります:

Chrome とは明らかに異なり、ページには「Hi there!」がすでに表示されていますが、背景色は白で、スタイル ファイルがまだダウンロードされていないことを示しています。ただし、スタイルファイルが読み込まれるまでChromeでは表示されません。

次に、ページ全体が読み込まれると、スクリーンショットは次のようになります:

リクエストのウォーターフォール フローからわかるように、Chrome と同様に、ブラウザは last.js をプリロードします。Chrome とは異なり、Firefox は画像をプリロードしませんが、.js がロードされた後に他の読み込みが完了するまで待機します。 。

Firefox では、スタイル ファイルはドキュメントのレンダリングに影響しません (最も典型的な現象は、最初はスタイルがないと Web ページが乱雑に表示されますが、スタイル ファイルがダウンロードされると正常に表示されることです) ) 本文では、JavaScript 動的にロードされた JS ファイルがその背後にある画像のダウンロードをブロックします。

3. Opera ブラウザの場合

Opera でテストした結果、Opera ブラウザはすべてのリソースが順番に読み込まれ、いわゆるプリロードが存在しないことがわかりました。

Opera では、スタイル ファイルがページのレンダリングをブロックします。これは Chrome と同様ですが、Opera のリクエスト ウォーターフォール フローから、ページ内のすべてのリソースが段階的に読み込まれ、other.js が読み込まれることがわかります。最後の .js 読み込みよりも先にあります。プリロードはありません。

テスト 2. スタイル ファイルは本文の先頭にあります。スクリプト ファイルの場所はテスト 1 と同じです。

<br><div class="msgheader">
<div class="right"><span style="CURSOR: pointer" onclick="copycode(getid('phpcode91'));"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode91">
<br><br> <br> <br>     <title>测试页面</title>
<br> <br> <br>     <link rel="stylesheet" type="text/css" href="example.aspx?sleep=3">
<br>     <div>
<br>         Hi, there!</div>
<br> <br>     <script type="text/javascript"><br />         document.write("<script src='other.aspx?sleep=5'>" + "ipt>");<br />     </script><br> <br>     <div>
<br>         Hi, again!</div>
<br>     <img src="/static/imghwm/default1.png" data-src="images/marx.jpg" class="lazy" alt="フロントエンドのパフォーマンス最適化の学習に備えて、HTML ページのレンダリング プロセスを理解する (続き)_HTML/Xhtml_Web ページの制作"><br>     <img src="/static/imghwm/default1.png" data-src="images/engels.jpg" class="lazy" alt="Engels"><br>     <img src="/static/imghwm/default1.png" data-src="images/Lenin.jpg" class="lazy" alt="Lenin"><br> <br>     <script src="last.aspx" type="text/javascript"></script><br> <br> <br> <br>
</div><br>经过测试,发现在火狐和Opera中,结果和测试一的一样,而在Chrome中稍微有些不同,在测试一中,图片要等到head中样式文件加载完之后才会下载,但是测试二中会和样式文件并行下载,如下图:

概要:

プリロードは存在しますが、Opera にはありません。Chrome 画像は本体のスタイル ファイルと並行してダウンロードできますが、ヘッドのスタイル ファイルと並行してダウンロードすることはできません。スクリプトは、その前のスタイル ファイルが読み込まれた後に実行されます。 Chrome と Opera では、アンロードされたリソースによりその背後にある要素のレンダリングがブロックされますが、Firefox ではブロックされません。テスト結果はブラウザのバージョンに関連している可能性があります。

これを読んで、少し混乱を感じましたか? できるだけ明確に表現したいのですが、私のレベルに限界があるため、不適切な点を指摘していただければ幸いです。自分で実験して見てください。

(終わり)^_^

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
深入了解content-visibility属性,聊聊怎么用它优化渲染性能深入了解content-visibility属性,聊聊怎么用它优化渲染性能Jul 18, 2022 am 11:19 AM

本篇文章带大家了解一下CSS content-visibility属性,聊聊使用该属性怎么优化渲染性能,希望对大家有所帮助!

如何通过取消MySQL自动提交来提高性能如何通过取消MySQL自动提交来提高性能May 11, 2023 am 08:15 AM

MySQL是一种流行的关系型数据库管理系统,旨在提供高效、可靠、灵活的数据存储和处理方案。然而,MySQL在自动提交事务方面存在一些缺点,这可能会降低其性能。在这篇文章中,我们将介绍如何通过取消MySQL自动提交来提高其性能。一、什么是MySQL自动提交?MySQL自动提交是指对于任何一条SQL语句,默认情况下都会自动开启一个事务,并在执行完该语句后立即提交

如何通过MySQL对DISTINCT优化来提高性能如何通过MySQL对DISTINCT优化来提高性能May 11, 2023 am 08:12 AM

MySQL是目前应用广泛的关系型数据库之一。在大数据量存储与查询中,优化数据库性能是至关重要的。其中,DISTINCT是常用的去重查询操作符。本文将介绍如何通过MySQL对DISTINCT优化来提高数据库查询性能。一、DISTINCT的原理及缺点DISTINCT关键字用于从查询结果中去除重复行。在大量数据的情况下,查询中可能存在多个重复值,导致输出数据冗余,

通过使用MySQL查询缓存提高性能通过使用MySQL查询缓存提高性能May 11, 2023 am 08:31 AM

随着数据量的增加和访问量的增加,数据库的性能问题已经成为很多网站的瓶颈。在许多情况下,数据库查询是网站中最耗费资源的操作之一。MySQL作为一种开源的关系型数据库管理系统,已经成为许多网站的首选数据库。在MySQL中,查询缓存是一种可以显著提高查询性能的缓存机制。本文将介绍MySQL查询缓存的工作原理,并提供一些实用建议,可以帮助您更好地使用MySQL查询缓

如何使用MySQL的慢查询日志来优化性能如何使用MySQL的慢查询日志来优化性能May 11, 2023 am 09:00 AM

随着数据量的增加和应用的复杂性,数据库的性能成为了一个越来越重要的问题。MySQL作为一款流行的关系型数据库管理系统,在优化性能方面也提供了许多工具和方法。其中,使用慢查询日志对MySQL进行性能优化是一种非常实用的方法。本文将介绍如何使用MySQL的慢查询日志来优化性能。一、什么是慢查询日志慢查询日志是MySQL中的一种日志记录机制,它会记录执行时间超过某

如何通过MySQL的锁机制来提高性能如何通过MySQL的锁机制来提高性能May 10, 2023 pm 11:21 PM

在MySQL数据库中,锁机制是至关重要的,它可以帮助控制并发访问的数据的数量和方式。通过正确的锁定策略和优化,可以提高MySQL的性能和可靠性。在本文中,我将详细介绍MySQL的锁机制并提供一些提高性能的技巧和建议。MySQL中的锁类型MySQL提供了多种锁类型,这些锁类型的主要目的是使数据的访问变得更加安全和有效。这些锁类型主要分为以下几类:表锁(Tabl

如何通过MySQL的程序缓存来优化性能如何通过MySQL的程序缓存来优化性能May 11, 2023 am 09:40 AM

MySQL是目前最流行的关系型数据库管理系统之一,被广泛应用于各种Web应用和企业级系统中。然而,随着应用规模的不断增大,数据库性能问题也成为了开发人员和系统管理员必须面对的挑战。其中,数据库查询是性能问题中的重点,因为它们通常是系统瓶颈所在。为了解决查询性能问题,MySQL提供了许多优化技巧和工具。其中一个重要的工具就是程序缓存(querycache),

如何通过MySQL对UNION优化来提高性能如何通过MySQL对UNION优化来提高性能May 11, 2023 pm 05:40 PM

在许多数据库应用程序中,我们都会面临需要整合来自多个数据源的数据的情况。MySQL的UNION语句就是一种用来解决这种情况的方式,它允许我们将两个或多个SELECT语句的结果集合并为一个。虽然这是一个非常方便的功能,但如果不加以优化,UNION语句也可能对系统产生性能问题。本文将探讨如何通过MySQL对UNION优化来提高性能。使用UNIONALL在使用U

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ヘンタイを無料で生成します。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

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

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

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