Chrome デベロッパー ツールの詳細な紹介 - タイムライン

Chrome デベロッパー ツールの詳細な紹介 - タイムライン

1. 概要

ユーザーは、アクセスする Web アプリケーションがインタラクティブでスムーズに実行されることを期待しています。したがって、Web 開発者としては、この点についてもより多くの時間を費やす必要があります。私たちが作成するページは、すばやく読み込まれるだけでなく、スムーズに実行される必要があります。ページのスクロールは指の動きにすばやく反応し、アニメーションとインタラクティブ効果はシルクのように滑らかである必要があります。

このように、高性能な Web サイトを作成する場合は、ブラウザーが HTML/JS/CSS を処理する方法を十分に理解して、コードが効率的であることを確認する必要があります。

2. FPSとパフォーマンス最適化の必要性

FPS は 1 秒あたりのリフレッシュ レートです。現在、ほとんどのデバイスの画面のリフレッシュ レートは 1 秒あたり 60 回です。ページにアニメーションやグラデーション効果がある場合、またはユーザーがページをスライドしている場合、ブラウザはアニメーションまたはページの各フレームを 16 ミリ秒以内にレンダリングする必要があります (1 秒 / 60 = 16.66 ミリ秒)。

1. ページレンダリングプロセス

しかし実際には、フレームをレンダリングしている間、ブラウザはいくつかの追加作業(レンダリング キューの管理、レンダリング スレッドと他のスレッド間の切り替えなど)を実行する必要があります。したがって、スムーズな視覚効果を実現するには、通常、単純なレンダリング作業を 10 ミリ秒以内に完了する必要があります。この時間制限を超えると、ページのレンダリングが停止し、一般にジャンクと呼ばれる状態になり、ユーザー エクスペリエンスが著しく低下します。

ページを画面上のピクセルに変換するには、通常、次の 5 つの段階を経ます。

左から右に、JS、スタイル、レイアウト、描画、レンダリング レイヤーのマージです。

a. 描画: 基本的にはピクセルを塗りつぶすプロセスです。最初のステップは、一連の描画呼び出しを作成することです。2 番目のステップは、ピクセルを塗りつぶすことです。これはラスタライズとも呼ばれます。

b レンダリング レイヤーのマージ: ブラウザーはすべてのレイヤーを適切な順序で 1 つのレイヤーにマージし、画面に表示します。

3. パフォーマンスの最適化と改善の方法

1. JavaScriptの実行効率を最適化する

1.1 アニメーション効果にはsetTimeoutやsetIntervalの使用を避け、代わりにrequestAnimationFrameを使用してください。

/**

関数 updateScreen(time) {

  // ここで視覚的な更新を行います。

}

アニメーションフレームをリクエストします(画面を更新します);

1.2 時間のかかるJavaScriptコードをWeb Workersに組み込む

1.3 DOM要素の更新を複数の小さなタスクに分割し、複数のフレームで完了する

1.4 Chrome DevToolsのタイムラインとJavaScriptプロファイラを使用してJavaScriptのパフォーマンスを分析する

2. スタイル計算の範囲と複雑さを軽減する

最悪の場合、スタイル計算の量 = 要素数 x スタイルセレクターの数になります。すべてのスタイルが一致しているかどうかを確認するには、各要素ごとに少なくとも 1 回はチェックする必要があるためです。

2.1 スタイルセレクタの複雑さを軽減する。BEMなどのクラスベースのアプローチを使用する。

2.2 スタイル計算を実行する必要がある要素の数を減らす

2.3 DevToolsを使用してタイムラインタブを選択し、左上隅にある赤い録画ボタンをクリックします。

3. 大規模で複雑なレイアウトを避ける

レイアウトとは、ブラウザが DOM 要素の形状、つまりページ内でのサイズと位置を計算するプロセスです。レイアウトにかかる時間は、主に、レイアウトする必要がある DOM 要素の数とレイアウト プロセスの複雑さによって決まります。

3.1 レイアウトのトリガーは可能な限り避けるべきである:DOM要素の幾何学的特性の変更は再レイアウトを必要とする。

4. 描画の複雑さを簡素化し、描画領域を縮小する

5. レンダーレイヤーのマージプロパティの使用とレイヤー数の制御を優先する

6. ユーザー入力時間の処理

4. Chromeコンソールツール

コンソールは開発者ツールとも呼ばれ、ブラウザに付属するデバッグ ツールです。現在主流のコンソールは、Firefox 用の Firebug、Chrome 開発ツール、Safari 用のデバッグ ツールです。

Chrome ブラウザを使用して任意の Web ページを開き、F12 キーを押すか、右クリックして「要素の検査」を選択してコンソールを開きます。この記事では、500 メイン ステーションを例に説明します。F12 をクリックすると、次に示すようにコンソールが表示されます。

表示できるツールは、要素、リソース、ネットワーク、ソース、タイムライン、プロファイル、監査、コンソールの 8 つあります。パネル間を移動するには、Ctrl + [ と Ctrl + ] のショートカットを使用できます。

各 Chrome モジュールとその主な機能は次のとおりです。

要素: 現在のページの HTML および CSS 要素を表示および編集するために使用されます。

ネットワーク: リクエスト ヘッダー、レスポンス ヘッダー、返されたコンテンツなど、HTTP リクエストの詳細情報を表示するために使用されます。

ソース: 現在のページによって読み込まれたスクリプトのソース ファイルを表示およびデバッグするために使用されます。

TimeLine: スクリプトの実行時間、ページ要素のレンダリング時間などの情報を表示するために使用されます。

プロファイル: CPU 実行時間やメモリ使用量などの情報を表示するために使用されます。

リソース: HTML、CSS スタイル ファイルなど、現在のページで要求されたリソース ファイルを表示するために使用されます。

監査: フロントエンド ページの最適化、Web ページの読み込み速度の向上などに使用されます。

コンソール: スクリプトに出力されたデバッグ情報を表示したり、テスト スクリプトを実行したりするために使用されます。

この記事では主にタイムラインについて述べます

タイムライン

ページに書き込まれたすべてのリソースには独自のレンダリングとペイントの結果があり、私たちの目には美しい Web ページが表示されます。しかし、帯域幅、CPU、時間などのリソースも消費します。サイクルはリソースの生成時に決定されます。リクエスト宣言サイクルの主な段階を次の図に示します。

タイムラインは、分析アプリケーションのすべてのアクティビティを記録して実行できます。ページのインタラクションを記録するには、タイムライン パネルを開いて記録ボタン ( ) を押して記録を開始するか、キーボード ショートカットの Cmd + E (Mac) または Ctrl + E (Windows/Linux) を入力します。録画ボタンが灰色から赤に変わり、タイムラインがページからタイムラインの取得を開始します。アプリでいくつかの操作を完了し、データを記録した後、もう一度ボタンをクリックして記録を停止します。

注意:新しいセッションを開始できるように、既存の記録セッションはクリアされます。 V8 にガベージ コレクションのラウンドを強制的に完了させます。これはデバッグに役立ちます。表示される詳細は、完了までに15ミリ秒以上かかったレコードのみを表示するようにフィルタリングされます。

まず、タイムラインのメインディレクトリを見てみましょう。

その横の赤い点はクリアな記録です。キャプチャする必要がある項目を選択するには、次のオプションを使用できます。ネットワーク、JS の紹介、スクリーンショット、ストレージ、説明です。

表示モードには、左側のフレーム モードと右側のイベント モードの 2 つがあります。フレーム モードでは、各フレーム生成の内部詳細を詳細に表示できます。イベント パターンにより、パフォーマンスに影響を与えるコスト要因の優先順位を可視化できます。

次の図は、オプションの Web ページを開くタイムラインです。

最初のボックスは概要で、ページのパフォーマンスを大まかに確認できます。

2 番目のボックスはイベント、つまりイベント監視です。以下は CPU のスタック トレースの視覚化です。緑はメディア時間、赤はロード イベント、青は DOM イベントを表します。

3番目のボックスはストレージを示します

4 番目のボックスは詳細で、イベントの詳細情報が表示されます。

このモードでは、概要ビュー (タイムラインの上部) に、ページ内のネットワークと HTML 解析 (青)、JavaScript (黄色)、スタイルの再計算とレイアウト (紫)、およびペイントと合成 (緑) のイベントを表す水平バーが表示されます。再描画は、ウィンドウのサイズ変更やスクロールなどの視覚的な変更に応じて呼び出されるブラウザ イベントです。

概要ビューの下には詳細ビューがあり、セッションが記録された後の関連カテゴリのレコードの詳細が表示されます。

各レコードには、左側に説明的なタイトルがあり、右側にタイムライン領域があります。マウスをレコードの上に移動すると、録画の開始から終了までの時間など、詳細な情報が表示されます。

CPU リソース。この面グラフは、イベント タイプによって消費された CPU リソースを示します。

Flame テーブルでイベントを選択すると、次の図に示すように、詳細ペインにイベントに関する詳細情報が表示されます。

上図は、ロード時間が 0.02 秒、スクリプト時間が 15.68 秒、レンダリング時間が 11.28 秒、描画時間が 46.06 秒、その他の時間が 49.06 秒、アイドル時間が 1.27 秒であることを示しています。

上の図は概要表です。下の図は詳細な概要表です。

5. その他の機能

1. Androidスマートフォンに接続してコードをデバッグする

携帯電話とコンピューターに Chrome ブラウザがインストールされている必要があり、Android 携帯電話は USB 経由で PC に接続されている必要があります。

1.1 モバイル開発者ツールでUSBデバッグを許可するを選択する

1.2 chrome://inspect/#devicesを開き、「USBデバッグを許可する」を選択します。

利用可能な Android スマートフォンと、Android スマートフォンで開かれたページが検出されます。次の図に示すように、URL を自分で入力することもできます。

1.3 画像の「検査」をクリックして、モバイル ページのデバッグ状態に入ります。

このようにして、コンピューター上でモバイル ページを操作およびデバッグできます。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただき、ありがとうございます。

<<:  Docker execは複数のコマンドを実行します

>>:  ウェブフロントエンドに対する一般的な攻撃とその防止方法

推薦する

nginx のフロントエンドとバックエンドに同じドメイン名を設定する方法

この記事では、主にnginxのフロントエンドとバックエンドに同じドメイン名を設定する方法を紹介し、皆...

MySQLで重複行を削除する方法

SQL文 /* MySQL で重複行を削除するいくつかの方法 ---Chu Minfei ---20...

CentOS の Nginx 公式 Yum ソースの設定を詳しく解説

私はプロジェクトの展開にAlibaba Cloudから購入したCentOSを使用しています。最近、プ...

Linux システム (CentOS7 インストール) に JDK8 をインストールするための詳細なチュートリアル

JDKのインストールシステムのインストールについてはあまり詳しく説明しません。インストール手順はオン...

CSS で子 div の高さを親コンテナの残りのスペースに合わせる方法

1. フローティング方式を使用する効果画像: コードは次のとおりです: (.content の高さは...

MySQL マスタースレーブレプリケーションの役割と動作原理の詳細な説明

1. マスタースレーブレプリケーションとは何ですか?マスタースレーブレプリケーションは、スレーブデー...

JavaScript におけるイベント委譲メカニズムと深いコピーと浅いコピーの簡単な分析

目次1. イベントの委任イベントバブリングイベントキャプチャイベントの泡立ちの昇華考える2. 深いコ...

Linux suse11でルートパスワードを忘れた場合に変更する方法の簡単な分析

SUSE Linuxでルートパスワードを忘れた場合の解決方法SUSE (Linux オペレーティング...

Linuxカーネルとデバイスツリーのコンパイルと書き込みを分析する

目次1. 材料を準備する2. Linuxカーネルファイルをダウンロードする3. コンパイル4. TF...

スタイル属性 (element.style) で定義されたインライン スタイルを削除する方法

Magento を頻繁に変更する場合、element.style に遭遇することがあります。 これは...

sqlalchemy に基づいて MySQL で追加、削除、変更、クエリ操作を実装する

需要シナリオ:上司は、クロ​​ーラーを使用してMySQLデータベースにデータを書き込んだり更新したり...

VMwareワークステーションとデバイス/資格情報の非互換性によって発生する起動エラーについて

VMware Workstationsが仮想マシンエラーを起動する エラー レポートのリンク htt...

MySQL 5.7 MGR シングルマスター決定マスターノード方式の詳細説明

当銀行のMGRは年末に開始されます。公式文書を読んだり、毎日テストを受けたりしなければなりません。毎...

Linuxカーネルをコンパイルする方法

1. 必要なカーネルバージョンをダウンロードする2. オペレーティングシステムにアップロードする3....

MySQL DDL による同期遅延を解決する方法

目次序文解決ツールの紹介仕組み使用制限使用上の注意使用例いくつかのパラメータの説明出力例Tencen...