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 をご愛顧いただき、ありがとうございます。 |
>>: ウェブフロントエンドに対する一般的な攻撃とその防止方法
CSS3 はアニメーションを作成でき、多くの Web ページのアニメーション画像、Flash アニメ...
インストールの提案: インストールには .exe を使用せず、圧縮パッケージを使用してください。これ...
1. テーブルステートメントを作成します。 テーブル「従業員」を作成します( `emp_no` in...
ページ上の画像を強調表示することは非常に一般的です。ここでは、jQuery を使用して画像を強調表示...
ORM とは何ですか? ORM は Object Relational Mapping の略で、オブ...
MySQL トランザクション サポートは、MySQL サーバー自体にバインドされているのではなく、ス...
JavaScript は多くの素晴らしい機能を備えています。この記事では、作業効率の向上とコードのデ...
目次1. データベース論理バックアップとはどのようなバックアップですか? 2. よく使われる論理バッ...
HTML部分コードをコピーコードは次のとおりです。 <!DOCTYPE html> &l...
1. イベント委任とは何ですか?イベント委譲: イベントバブリングの特性を利用して、子要素に登録すべ...
理由nacos の pom が依存する mysql バージョンが、mysql バージョンと一致してい...
この記事では、MySQL の自動作成時刻と変更時刻を設定する方法について説明します。ご参考までに、詳...
目次1. サブルート構文2. 例1. 2つの新しいコンポーネントを作成し、その内容を変更する2. ル...
序文JavaScriptはWebフロントエンドで広く使われている言語の一つであり、Webアプリケーシ...
1. Dockerコンテナを起動する以下のコマンドを使用して新しい Docker コンテナを起動しま...