またはGTmetrixで「DOM要素の数を減らす」:
DOMとは何ですか?
ブラウザがHTMLドキュメントを受信したら、CSSとJavaScriptを使用したレンダリングと描画に使用されるツリー構造に変換する必要があります。
このツリー構造は、DOMまたはドキュメントオブジェクトモデルと呼ばれます。
- 結び目 DOM内のすべてのHTML要素はノードと呼ばれます。 (別名「葉」は木の上にあります)。
- 深さ –「ブランチ」がツリー内を移動する時間は深さと呼ばれます。たとえば、上の図では、imgタグの深さは3です(HTML-> body-> div-> img)。
- 子要素 –ノードのすべての子ノード(さらに分岐することなく)は子です。
LighthouseとGooglePageSpeedInsightsは、次のいずれかの条件が満たされた場合にページのフラグ付けを開始します。
- 合計で1500を超えるノードがあります。
- 32ノット以上の深さを持っています。
- 親ノードには60を超える子ノードがあります。
DOMサイズはパフォーマンスにどのように影響しますか?
DOMのサイズが大きすぎると、さまざまな方法でパフォーマンスに影響を与える可能性があります。
- より高い解析およびレンダリング時間(FCP) 。大きなDOMツリーと複雑なスタイルのルールは、ブラウザーにとって素晴らしい仕事をします。ブラウザは、HTMLを解析し、レンダリングツリーを構築する必要があります。ユーザーが対話したり、HTMLの何かが変更されたりするたびに、ブラウザはそれを再度計算する必要があります。
- メモリ使用量を増やします -JavaScriptコードには、DOM要素にアクセスするための関数が含まれている場合があります。 DOMツリーが大きくなると、JavaScriptはそれらを処理するためにより多くのメモリを使用するようになります。例として、クエリセレクタがあります。
document.querySelectorAll( 'img')
これは、遅延読み込みライブラリで一般的に使用されるすべての画像を一覧表示します。 - TTFBを増やします – DOMのサイズが大きくなると、HTMLドキュメントのサイズも大きくなります(KB単位)。より多くのデータをネットワーク経由で転送する必要があるため、これによりTTFBが増加します。
DOMサイズを技術的に縮小する方法は?
たとえば、DOMのサイズを縮小することは技術的に簡単です。
利用方法:
<ul id="navigation-main">etc..</ul>
それ以外の:
<div id="navigation-main"><ul>etc..</ul></div>
基本的に、考えられるすべてのHTML要素を取り除きます。 FlexboxまたはGridを使用して、DOMサイズをさらに縮小することもできます。
しかし、WordPressを使用しているので、これはあまり役に立ちません!
WordPressでDOMサイズを減らす方法は?
大きなページを複数のページに分割する
サイトにすべてが掲載されたページはありますか?サービス、お問い合わせフォーム、製品、ブログ投稿、お客様の声などのように?
それらを複数のページに分割し、ヘッダー/ナビゲーションバーからリンクしてみてください。
可能なすべての遅延読み込みとページ付け
あらゆる種類の要素の遅延読み込み。ここではいくつかの例を示します。
- YouTubeビデオの遅延読み込み -WP YouTubeLyteまたはWPRocketによるLazyLoadを使用します。
- 1ページあたりのブログ投稿/製品の数を制限する –私は通常、ページごとに最大10のブログ投稿を保持し、残りをページ分割しようとします。
- ブログ投稿/製品の遅延読み込み – [さらに読み込む]ボタンまたは無限スクロールを追加して、ブログの投稿や製品をさらに読み込みます。
- 遅延読み込みコメント -Disqusを使用しているので、Disqusの条件付き読み込みを使用しています。独自のコメントを使用している場合は、Lazy Load forCommentsなどのプラグインを使用してください。
- コメントのページ付け -何百ものコメントがある場合、これはDOMサイズにも影響を与える可能性があります。コメントをページ付けするには、[設定]-> [ディスカッション]-> [コメントのページ付け]に移動します。
- 関連する投稿の数を制限する –関連する投稿の数を3または4に制限してみてください。
注:画像の遅延読み込みによってDOMのサイズが縮小されることはありません
CSSで不要な要素を隠さないでください
テーマ/デザイナーによって導入された要素を削除する必要がある場合があります。たとえば、製品ページのカートにボタン、レートボタン、作成者情報、発行日などを追加します。
簡単な修正は、CSSでそれらを非表示にすることです:
.cart-button {display:none;}
このソリューションは単純に見えますが、不要なコード(HTMLマークアップとCSSスタイルの両方を含む)にユーザーをさらしていることになります。
テーマ/プラグインの設定をチェックして、それを削除するオプションがあるかどうかを確認してください。それ以外の場合は、関連するPHPコードを見つけて、削除/コメントアウトします。
よく書かれたテーマとページビルダーを使用する
優れたテーマは、DOMのサイズにおいて重要な役割を果たします。次のようなよく書かれたテーマを使用するGeneratePress またアストラ .
ページビルダーはまた、あまりにも多くのdivを導入します。次のようなコンストラクタを使用します空気、 不要なdivブロックを導入せず、HTML構造をより細かく制御できます。
結論
あまりにも多くのdivを導入するプラグインまたはテーマ設定がもっとあるかもしれません。例としては、UberMenuなどの「メガメニュー」プラグインがあります。
時々、それらはあなたのサイトのユーザーエクスペリエンスにとって重要です。ただし、ユーザーが使用しない場合もあります。
ほとんどの訪問者は75%までしかスクロールしないため、おそらくフッターリンクはクリックされません。
HotJarやGoogleAnalytics Eventsなどのツールを使用して、訪問者が実際に使用しているものと使用していないものを確認します。分析し、測定し、繰り返します。