負荷CSSやJSの詳細なWebフロントエンドのパフォーマンスの最適化

ブラウザの負荷ページとレンダリング処理

積載

  • DNSサーバに基づくブラウザIPドメイン名を取得地壇
  • IPマシンにHTTPリクエストを送信します
  • サーバーは、プロセスを受信して​​、HTTPリクエストを返します。
  • ブラウザは、内容が取得返します

レンダリング処理

  • 生成されたHTML DOMツリー構造
  • CSS生成CSSOMによると、
  • RenaderTree開始レンダリングと表示をよります
  • 遭遇した<strcipt>実行とレンダリングをブロックされます

レイジーローディング

  • 表示領域を入力した後ピクチャーインピクチャーリソース要求
  • 多くの電気のプロバイダや他の画像については、ページの長いビジネスシナリオが適用されます
  • リソースの負荷を軽減無効
  • あまりにも多くの同時負荷jsのリソースは、サイトEpicaでの通常の使用のロードをブロックします。

プリロード

  • 使用の事前に写真や他の静的リソース要求
  • キャッシュからロードされたリソースの使用は、ユーザーエクスペリエンスを強化します
  • ページは、メンテナンスの依存性を示します

ページの還流

  • なぜならレンダーツリーとニーズの素子サイズ、レイアウト、非表示の大きさやその他の変更の一部(またはすべて)が再構築されるとき。これは、リフロー(リフロー)と呼ばれています
  • ページレイアウトと幾何学的特性を還流ニーズを変更した場合

再描画

  • renaderツリーは、いくつかの要素は、属性を更新する必要があるが、これらの属性は、外観のみの要素に影響を与え、スタイル、およびこのような背景色として、レイアウトには影響しません。
還流を再描画を引き起こし、還流原因必ずしも再描画されます

プロパティのページレイアウトをトリガ

  • ボックスモデル関連の属性は重いレイアウトをトリガします
  • ポジショニングや財産を浮動することは重いレイアウトをトリガします
  • 重いレイアウトをトリガーするノード構造内のテキストを変更します

clipboard.png

唯一のトリガ再描画プロパティ

clipboard.png

新しいDOMプロセス

 複数の層を取得した後1. DOMに分割され
 、各層のノードは、パターン結果(再計算style--スタイル重量)を計算2.
 各ノードについて3.グラフィック位置(Layout--還流再レイアウトを生成します)
 4.ビットマップを描画するために、各ノードの充填層(セットアップPaint--及び再描画をペイント) 
 GPUのテクスチャとして前記アップロード層
 最終スクリーン画像を生成するページに適合する6層の複数(複合Layers--層再編)

条件を作成するためにクロム層

  1. 3D又は透視変換(視点変換)CSSプロパティ
  2. 復号加速ビデオを使用して<動画>ノード
  3. 2Dコンテキストは、3D(WebGLの)コンテキストまたは加速度の<canvas>ノードを有します
  4. (フラッシュのような)ハイブリッド、プラグイン
  5. アニメーション要素を変換WebKitのCSSは、独自のアニメーションや使用上で行う不透明度
  6. これは、CSSフィルタエレメントを加速しています
  7. 子孫要素ノードが複合層を含んある(一つの要素は、子要素に独自の層内の子要素を持ちます)
  8. 複合層およびz屈折率兄弟要素(換言すれば、上記の要素が複合層にレンダリングされている)からなる下部要素

実際の最適化のポイント

  1. また変更でトップを翻訳
  2. 不透明度を持つ代替の可視性
  3. 、一つのスタイルによってDOM 1を変更する事前定義されたクラス、その後、DOMクラス名を変更しないでください
  4. ディスプレイへの最初のDOM:次のようなDOMオフライン、変更した後(リフロー1回)なしに、その後、あなたは100回を変更し、その後、表示をそれを置きます
  5. 変数内のループとしてループ内で値のDOMノードの属性はいけません
  6. テーブルのレイアウトを使用しないでください、小さくてもよく、小さな変化がテーブル全体の再レイアウトになります
  7. 達成するためにアニメーションの速度を選択します
  8. 新しいレイヤアニメーションのための
  9. GPUのハードウェアアクセラレーションを有効にします
あなたは、生涯学習者になることがあり

おすすめ

転載: www.cnblogs.com/jlfw/p/11900677.html