先端性能最適化のまとめ
2413 ワード
記録性能の最適化に関する知識.
Chrome DevTools-Network
Waterfall
HTTP要求の異なる段階によるソート
下図のようにWaterfall右ボタンの後にTotal Durationを選択すると、全体の継続時間に従って並べ替えてください.色は異なるリソースファイルを表しています.明るい色の部分はリソースの待ち時間を表しています.暗い部分はダウンロード時間を表しています.
ローディング
一、どうして怠惰でロードしますか?
二、怠惰な負荷の実現原理は、まず、srcではなく、ピクチャのアドレスを他の属性(data-url)に置く. ページのロード時に、scrollTopの値から画像が視認領域にあるかどうかを判断し、視認領域であれば、data-url属性の値をsrc属性に取り出して保存する(先頭画面の画像は直接読み込むことができる). は、スクロール中に、画像が視認領域にあるかどうかを判定し、ある場合には、data-url属性の値をsrc属性に置く. 画像の最適化
画像の最適化のいくつかの方法:
CSS SpriteとBASE 64の対比
各タイプの画像の比較
遅延荷重第三者JS で行われます. . deferはローディング順にスクリプトファイルを実行します.asyncは声明の順序で を実行しません.
具体的な違いは下図の通りです.
緑色の線はHTML解析を表します.青い線はJSスクリプトの読み込み時間を表します.赤い線はJSスクリプトの実行時間を表します.
PrloadとPrefetch
preloadは指定されたリソースをブラウザに事前にローディングさせ(ローディング後は実行されません)、実行が必要な時に実行します.ロードと実行を分離し、レンダリングとdocumentのオンラインイベントをブロックしない 指定リソースを事前にロードする 使用:
prefetch:ブラウザが将来使用する可能性があるリソースを教えてくれます.ブラウザは暇な時に対応するリソースをロードします.
使用:
Gzip->Brotil
Brotli圧縮アルゴリズムは複数の特徴を持ち、最も典型的なものは以下の3つである.一般的なWebリソースコンテンツに対して、Brotliの性能はGzipに比べて17-25%向上した. Brotli圧縮レベルが1の場合、圧縮率はGzip圧縮レベルより9(最高)の場合も高い. は、異なるHTML文書を処理する際に、Brotliは依然として非常に高い圧縮率を提供することができる. DNS事前解析
デフォルトでは、ブラウザはページと現在のドメイン名が同じドメインではないドメイン名をプリフェッチし、キャッシュします.これは陰的なDNS Prfetchです.ページに出現していないドメインをプリフェッチしたい場合は、表示されているDNS Prfetchを使用します.
https://segmentfault.com/a/11...DNS事前解析:https://www.cnblogs.com/golov...
Chrome DevTools-Network
DOMContentLoaded:
DOMツリーの構築が完了した時間Load:
ページのロードが完了しました.すなわち、DOMツリーの構築が完了した後、ピクチャなどの外部リソースをロードし終えた時間Finish:
は、ページ上のすべてのHTTP要求が応答完了に送信される時間である.Waterfall
HTTP要求の異なる段階によるソート
Start Time:
が開始を要求した時間Response Time:
リソースのダウンロード開始時間End Time:
が、終了を要求した時間Total Duration:
は、全プロセスの時間Latency
全体を要求する. 応答待ち時間を要求します.下図のようにWaterfall右ボタンの後にTotal Durationを選択すると、全体の継続時間に従って並べ替えてください.色は異なるリソースファイルを表しています.明るい色の部分はリソースの待ち時間を表しています.暗い部分はダウンロード時間を表しています.
ローディング
一、どうして怠惰でロードしますか?
二、怠惰な負荷の実現原理
画像の最適化のいくつかの方法:
CSS SpriteとBASE 64の対比
各タイプの画像の比較
遅延荷重第三者JS
defer :
がDOMをレンダリングするプロセスは、JSスクリプトローディングのプロセスと非同期的に進行されるだろう. JSスクリプトの実行は、すべての要素の解析が完了した後(外部スクリプトファイルにのみ適用されます)async :
によって、DOMをロードし、レンダリングするプロセスが、および JSスクリプトのロードと実行のプロセスは非同期的に行われる(外部スクリプトファイルにのみ適用される)具体的な違いは下図の通りです.
緑色の線はHTML解析を表します.青い線はJSスクリプトの読み込み時間を表します.赤い線はJSスクリプトの実行時間を表します.
PrloadとPrefetch
preloadは指定されたリソースをブラウザに事前にローディングさせ(ローディング後は実行されません)、実行が必要な時に実行します.
prefetch:ブラウザが将来使用する可能性があるリソースを教えてくれます.ブラウザは暇な時に対応するリソースをロードします.
使用:
Gzip->Brotil
Brotli圧縮アルゴリズムは複数の特徴を持ち、最も典型的なものは以下の3つである.
デフォルトでは、ブラウザはページと現在のドメイン名が同じドメインではないドメイン名をプリフェッチし、キャッシュします.これは陰的なDNS Prfetchです.ページに出現していないドメインをプリフェッチしたい場合は、表示されているDNS Prfetchを使用します.
DNS
は、ブラウザが、ユーザがリンクにアクセスする前にドメイン名を解析しようとするもので、1つのページに複数のドメイン名のリンクがある場合、DNS
は、ユーザがリンクをクリックする前に、最も少ないCPUとネットワークを使用して、バックグラウンドで解析を行う.事前に解析したドメイン名をクリックすると、平均的に200 msの待ち時間を短縮し、ユーザー体験を向上させることができる.
参考文献:https://segmentfault.com/a/11...DNS事前解析:https://www.cnblogs.com/golov...