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は複数のコマンドを実行します

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

推薦する

mysql と oracle のデフォルトのトランザクション分離レベルの説明

1. トランザクション特性(ACID) (1)原子性トランザクションに関係するプログラムによって実行...

ROS で Turtlebot3 移動ロボットを制御するための基本的なチュートリアル

中国語チュートリアルhttps://www.ncnynl.com/category/turtlebo...

CSS 8 目を引く HOVER 効果のサンプル コード

1. エフェクトHTMLを送信する <div id="送信ボタン">...

Vueはel-tree遅延読み込みを使用して、追加、削除、変更、クエリ機能を実装します。

Vue のツリー表示については、プロジェクトが使用されています: エフェクト ダイアグラムがツリー...

シンプルなカルーセル効果を実現するJavaScript

カルーセルとは何ですか?カルーセル: モジュールまたはウィンドウで、コンピューターでマウスをクリック...

MySQL での or ステートメントの使用例

1. MySQL での or 構文の使用、および MySQL 構文で or を使用する際の注意点。 ...

React HTML で react を使用する 2 つの方法

基本的な使い方 <!DOCTYPE html> <html lang="...

Windows での MySQL のダウンロード、インストール、設定、使用に関するチュートリアル

MySQLの概要MySQL はリレーショナル データベース管理システムです。データベースは構造化され...

CocosCreatorでWeChatゲームを作成する方法

目次1. WeChatパブリックプラットフォームからWeChat開発者ツールをダウンロードする2. ...

Vue で Excel ストリーム ファイルをダウンロードし、ダウンロード ファイル名を設定する方法

目次概要1. URL経由でダウンロード2. aタグのダウンロード属性とblobコンストラクタを組み合...

Reactフックの仕組み

目次1. React フックと純粋関数2. シンプルなmyUseState 3. myUseStat...

iframe を介してフレームセットを本体に配置する

フレームセットと本文は同じレベルにあるため、本文にフレームセットを配置することはできません。まずペー...

Linux yum コマンドを使用して mysql8.0 をインストールする方法の詳細なチュートリアル

1. 設置前によく掃除する rpm -pa | grep mysql または rpm -qa | g...

HTML マーキー文字フラグメントのスクロール

その特性は次のとおりです。方向アクティブな字幕のスクロール方向を設定するコードは次のとおりです。 &...