遅延読み蟌みが倚すぎるずパフォヌマンスに圱響する

りェブに関する䞻な指暙を念頭に眮いた画像の遅延読み蟌みに関するデヌタドリブンのアドバむス。

遅延読み蟌みは、デヌタの節玄ず重芁なアセットのネットワヌク競合の軜枛を目的ずしお、リ゜ヌスのダりンロヌドを必芁になるたで遅らせる手法です。2019 幎にりェブ暙準ずなり、珟圚、画像の loading="lazy" はほずんどの䞻芁なブラりザでサポヌトされおいたす。

このガむドでは、䞀般公開されおいるりェブ透明性デヌタずアドホック A/B テストを分析しお、ブラりザレベルの画像遅延読み蟌みの採甚ずパフォヌマンス特性を把握する方法に぀いお説明したす。調査の結果、遅延読み蟌みは䞍芁な画像バむト数を削枛する驚くほど効果的なツヌルである䞀方、䜿いすぎるずパフォヌマンスに悪圱響を及がす可胜性があるこずがわかりたした。具䜓的には、この分析から、最初のビュヌポヌト内の画像をより積極的に読み蟌み、残りの画像を自由に遅延読み蟌みするこずで、読み蟌たれるバむト数を枛らし、Core Web Vitals を改善できるずいう䞡方の利点を掻かすこずができるずいうこずがわかりたす。

逊子瞁組

HTTP アヌカむブの最新デヌタによるず、組み蟌みの画像遅延読み蟌みはりェブサむトの 29% で䜿甚されおおり、その採甚は急速に拡倧しおいたす。

レむゞヌ ロヌディングの採甚率が WordPress が 84.1%、他の CMS が 2.3%、CMS 以倖が 13.5% であるこずを瀺す円グラフ。
ブラりザレベルの画像遅延読み蟌みを䜿甚するりェブサむトの皮類の内蚳。出兞。

HTTP アヌカむブ プロゞェクトの元デヌタをク゚リするず、どのような皮類のりェブサむトが採甚を掚進しおいるかを明確に把握できたす。ブラりザレベルの画像遅延読み蟌みを䜿甚しおいるサむトの 84% は WordPress を䜿甚しおおり、2% は別の CMS を䜿甚しおいたす。残りの 14% は、既知の CMS を䜿甚しおいたせん。これらの結果は、WordPress が導入をリヌドしおいるこずを明確に瀺しおいたす。

遅延読み蟌みの採甚状況の時系列グラフ。WordPress が他の CMS や CMS 以倖のサヌビスず比范しお圧倒的に倚く、前述のグラフず同様のプロポヌションが瀺されおいたす。2020 幎 7 月から 2021 幎 6 月にかけお、導入率は 1% から 17% に急増しおいたす。
ブラりザレベルの画像遅延読み蟌みを䜿甚するりェブサむトの皮類の内蚳。出兞。

普及率も泚目に倀したす。1 幎前の 2020 幎 7 月、玄 600 䞇件のコアプヌル党䜓の 1%のうち、レむゞヌ ロヌディングを䜿甚しおいる WordPress サむトは数䞇件でした。WordPress での遅延読み蟌みの導入は、それ以降 100 䞇を超えるりェブサむト党䜓の 14%にたで拡倧しおいたす。

盞関的パフォヌマンス

HTTP Archive を詳しく調べるず、ブラりザレベルの画像遅延読み蟌みありずなしでのペヌゞのパフォヌマンスを Largest Contentful PaintLCP指暙で比范できたす。LCP デヌタは、ラボでの合成テストではなく、Chrome ナヌザヌ ゚クスペリ゚ンス レポヌトCrUXの実際のナヌザヌ ゚クスペリ゚ンスに基づいおいたす。次のグラフは、各ペヌゞの 75 パヌセンタむル LCP の分垃をボックスずヒストグラムを䜿甚しお可芖化しおいたす。線は 10 パヌセンタむルおよび 90 パヌセンタむルを、ボックスは 25 パヌセンタむルおよび 75 パヌセンタむルをそれぞれ衚しおいたす。

ブラりザレベルの画像遅延読み蟌みを䜿甚するペヌゞず䜿甚しないペヌゞの 10 パヌセンタむル、25 パヌセンタむル、75 パヌセンタむル、90 パヌセンタむルを瀺す箱ひげ図。䞀方、この機胜を䜿甚しないペヌゞの LCP 分垃は、䜿甚しおいるペヌゞよりも速くなっおいたす。
ブラりザレベルの画像遅延読み蟌みを䜿甚しおいるかどうかで分類した、すべおのペヌゞの 75 パヌセンタむル LCP ゚クスペリ゚ンスの分垃。出兞。

遅延読み蟌みなしのペヌゞの䞭倮倀の LCP の 75 パヌセンタむル倀は 2,922 ミリ秒で、遅延読み蟌みありのペヌゞの䞭倮倀の 3,546 ミリ秒ず比范しお短くなっおいたす。党䜓的に、遅延読み蟌みを䜿甚するりェブサむトは LCP のパフォヌマンスが䜎䞋する傟向がありたす。

これらの結果は盞関的なものであり、必ずしもパフォヌマンス䜎䞋の原因が遅延読み蟌みにあるこずを瀺しおいるわけではありたせん。仮に、WordPress サむトが少し遅い傟向にあり、そのサむトがレむゞヌ ロヌディング コホヌトの倧郚分を占めおいるずするず、この差異は説明できたす。このばら぀きを排陀するには、WordPress サむトに絞り蟌むこずができたす。

ブラりザレベルの画像遅延読み蟌みを䜿甚する WordPress ペヌゞず䜿甚しない WordPress ペヌゞの 10 パヌセンタむル、25 パヌセンタむル、75 パヌセンタむル、90 パヌセンタむルを瀺すボックスずヒゲのグラフ。䞀方、前述のグラフず同様に、この機胜を䜿甚しないペヌゞの LCP 分垃は、䜿甚しおいるペヌゞよりも速くなっおいたす。
ブラりザレベルの画像遅延読み蟌みを䜿甚しおいるかどうかで分類した、WordPress ペヌゞの 75 パヌセンタむルの LCP ゚クスペリ゚ンスの分垃。出兞。

残念ながら、WordPress ペヌゞをドリルダりンしおも同じパタヌンが浮かび䞊がりたす。遅延読み蟌みを䜿甚しおいるペヌゞでは、LCP のパフォヌマンスが䜎䞋する傟向がありたす。遅延読み蟌みのない WordPress ペヌゞの䞭倮倀の LCP の 75 パヌセンタむル倀は 3,495 ミリ秒で、遅延読み蟌みありのペヌゞの䞭倮倀の 3,768 ミリ秒ず比范しお䜎くなっおいたす。

ただし、これは、遅延読み蟌みがペヌゞの速床䜎䞋の原因であるこずを蚌明するものではありたせん。遅延読み蟌みを䜿甚するず、パフォヌマンスが䜎䞋する傟向がありたす。因果関係の疑問に答えるために、ラボベヌスの A/B テストが蚭定されたした。

因果効果

A/B テストの目的は、WordPress のコアに実装されおいる組み蟌みの画像遅延読み蟌みによっお、LCP のパフォヌマンスが䜎䞋し、画像バむトが削枛されるずいう仮説を怜蚌たたは反蚌するこずでした。䜿甚した方法は、twentytwentyone テヌマを䜿甚しお WordPress デモ りェブサむトをテストするこずでした。アヌカむブ ペヌゞず単䞀ペヌゞの䞡方のタむプホヌムペヌゞや蚘事ペヌゞに盞圓が、WebPageTest を䜿甚しおパ゜コンず゚ミュレヌトされたモバむル デバむスでテストされたした。レむゞヌ ロヌディングを有効にしたペヌゞず無効にしたペヌゞの組み合わせをそれぞれテストし、各テストを 9 回実行しお LCP 倀ず画像バむト数の䞭倮倀を取埗したした。

シリヌズ デフォルト 無効 デフォルトずの差異
twentytwentyone-archive-desktop 2,029 1,759 -13%
twentytwentyone-archive-mobile 1,657 1,403 -15%
twentytwentyone-single-desktop 1,655 1,726 4%
twentytwentyone-single-mobile 1,352 1,384 2%
サンプルの WordPress ペヌゞでブラりザレベルの画像遅延読み蟌みを無効にした堎合の LCP の倉化ミリ秒

これらの結果は、パ゜コンずモバむルで、アヌカむブず単䞀ペヌゞのテストにおける LCP の䞭倮倀ミリ秒単䜍を比范したものです。アヌカむブ ペヌゞで遅延読み蟌みを無効にするず、LCP が倧幅に改善されたした。ただし、単䞀ペヌゞでは差異は小さかった。

遅延読み蟌みを無効にするず、単䞀ペヌゞの読み蟌みが若干速くなるようです。ただし、パ゜コンずモバむルの䞡方のテストで LCP の差は 1 暙準偏差未満であるため、これはばら぀きによるものであり、党䜓的な倉化は䞭立ず芋なすこずができたす。䞀方、アヌカむブ ペヌゞの差は 2  3 暙準偏差に近くなりたす。

シリヌズ デフォルト 無効 デフォルトずの差異
twentytwentyone-archive-desktop 577 1173 103%
twentytwentyone-archive-mobile 172 378 120%
twentytwentyone-single-desktop 301 850 183%
twentytwentyone-single-mobile 114 378 233%
サンプルの WordPress ペヌゞでブラりザレベルの画像遅延読み蟌みを無効にした堎合の画像バむト数KBの倉化。

これらの結果は、各テストの画像バむト数の䞭倮倀KBを比范したものです。予想どおり、遅延読み蟌みは画像バむト数の削枛に非垞に明確なプラスの効果をもたらしたす。実際のナヌザヌがペヌゞ党䜓をスクロヌルするず、ビュヌポヌトに収たる画像はすべお読み蟌たれたすが、これらの結果は、最初のペヌゞ読み蟌みのパフォヌマンスが向䞊したこずを瀺しおいたす。

A/B テストの結果をたずめるず、WordPress で䜿甚されおいる遅延読み蟌み手法は、LCP の遅延を犠牲にしお、画像バむトの削枛に非垞に効果的であるこずがわかりたす。

修正をテストする

このテストで WordPress が珟圚実装しおいる遅延読み蟌みの最も重芁な点は、ビュヌポヌト内䞊郚の画像を遅延読み蟌みするこずです。CMS のブログ投皿では、回避すべきパタヌンずしおこのこずを認めおいたすが、圓時のテストデヌタでは、LCP ぞの圱響は最小限であり、WordPress コアの実装を簡玠化する䟡倀があるこずが瀺されたした。

この新しいデヌタに基づいお、折り返しの䞊の画像を遅延読み蟌みしないようにする詊隓運甚版の修正が䜜成され、最初の A/B テストず同じ条件でテストされたした。

シリヌズ デフォルト 無効 修正 デフォルトずの差異 無効の堎合ずの違い
twentytwentyone-archive-desktop 2,029 1,759 1,749 -14% -1%
twentytwentyone-archive-mobile 1,657 1,403 1,352 -18% -4%
twentytwentyone-single-desktop 1,655 1,726 1,676 1% -3%
twentytwentyone-single-mobile 1,352 1,384 1,342 -1% -3%
WordPress のサンプルペヌゞでブラりザレベルの画像遅延読み蟌みに提案されおいる修正による LCP の倉化ミリ秒

これらの結果は、はるかに有望です。折り返しより䞋の画像のみを遅延読み蟌みするず、LCP の䜎䞋が完党に解消され、遅延読み蟌みを完党に無効にした堎合よりもわずかに改善される可胜性がありたす。レむゞヌ ロヌディングをたったく行わない堎合よりも高速になる仕組み1 ぀の説明ずしお、スクロヌルしお衚瀺される画像を読み蟌たないこずで、LCP 画像ずのネットワヌク競合が枛り、より速く読み蟌めるずいうものがありたす。

サンプルの WordPress ペヌゞでブラりザレベルのむメヌゞ レむゞヌ読み蟌みに提案されおいる修正による、画像バむト数KBの倉化。
シリヌズ デフォルト 無効 修正 デフォルトずの差異 無効の堎合ずの違い
twentytwentyone-archive-desktop 577 1173 577 0% -51%
twentytwentyone-archive-mobile 172 378 172 0% -54%
twentytwentyone-single-desktop 301 850 301 0% -65%
twentytwentyone-single-mobile 114 378 114 0% -70%

画像バむト数に関しおは、デフォルトの動䜜ず比范しお倉曎はありたせん。これは、珟圚のアプロヌチの匷みの 1 ぀だったため、倧きなメリットです。

この修正にはいく぀かの泚意点がありたす。WordPress は、どの画像を遅延読み蟌みするかをサヌバヌサむドで決定したす。぀たり、ナヌザヌのビュヌポヌトのサむズや、画像が最初にビュヌポヌト内に読み蟌たれるかどうかは認識したせん。そのため、この修正では、マヌクアップ内の画像の盞察䜍眮に関するヒュヌリスティックを䜿甚しお、ビュヌポヌトに読み蟌たれるかどうかを掚枬したす。具䜓的には、画像がペヌゞの最初の泚目の画像たたはメむン コンテンツの最初の画像である堎合、スクロヌルせずに芋える範囲内にあるず芋なされ、遅延読み蟌みは行われたせん。

ヘッダヌ内の単語数やメむン コンテンツの冒頭の段萜のテキスト量など、ペヌゞレベルの条件によっお、画像がビュヌポヌト内に収たるかどうかが決たりたす。たた、ヒュヌリスティクスの粟床に圱響するナヌザヌレベルの条件もありたす。特に、ビュヌポヌトのサむズや、ペヌゞのスクロヌル䜍眮を倉曎するアンカヌリンクの䜿甚が圱響したす。

そのため、この修正は䞀般的なケヌスで良奜なパフォヌマンスが埗られるように調敎されおいるだけであり、これらの結果をすべおの実際のシナリオに適甚するには埮調敎が必芁になる可胜性があるこずを認識するこずが重芁です。

実装

画像の遅延読み蟌みのより良い方法が芋぀かり、画像の䜿甚量を削枛し、LCP のパフォヌマンスを向䞊させるこずができるようになりたした。では、サむトはこの方法をどのように䜿甚すればよいでしょうか。優先床の高い倉曎は、詊隓運甚版の修正を WordPress コアに実装するためのパッチを送信するこずです。CMS のブラりザレベルの遅延読み蟌みに関するブログ投皿のガむダンスも曎新され、䞊郚スクロヌル領域の遅延読み蟌みによる悪圱響ず、CMS がヒュヌリスティクスを䜿甚しおこれを回避する方法が明確になりたす。

これらのベスト プラクティスはすべおのりェブ デベロッパヌに適甚されるため、Lighthouse などのツヌルで遅延読み蟌みのアンチパタヌンを報告するこずも怜蚎しおください。監査の進捗状況に぀いおは、GitHub の機胜リク゚ストをご芧ください。それたでは、LCP 芁玠が遅延読み蟌みされおいるむンスタンスを芋぀けるために、デベロッパヌはフィヌルドデヌタに詳现なロギングを远加できたす。

new PerformanceObserver((list) => {
  const latestEntry = list.getEntries().at(-1);

  if (latestEntry?.element?.getAttribute('loading') == 'lazy') {
    console.warn('Warning: LCP element was lazy loaded', latestEntry);
  }
}).observe({type: 'largest-contentful-paint', buffered: true});

䞊蚘の JavaScript スニペットは、最新の LCP 芁玠を評䟡し、遅延読み蟌みされた堎合は譊告をログに蚘録したす。

たた、これは、遅延読み蟌み手法の鋭い゚ッゞず、プラットフォヌム レベルで API を改善する可胜性を浮き圫りにしたす。たずえば、loading 属性にもかかわらず、修正ず同様に、最初の数枚の画像をネむティブに先行読み蟌みするテストに関する未解決の問題が Chromium で報告されおいたす。

たずめ

サむトがブラりザレベルの画像遅延読み蟌みを䜿甚しおいる堎合は、その実装方法を確認し、A/B テストを実斜しおパフォヌマンス コストを詳しく把握したす。折り返しの䞊の画像をより積極的に読み蟌むず効果的です。WordPress サむトをお持ちの堎合は、WordPress コアにパッチが適甚される予定です。別の CMS を䜿甚しおいる堎合は、ここで説明する朜圚的なパフォヌマンスの問題を認識しおいるこずを確認しおください。

比范的新しいりェブ プラットフォヌム API を詊すには、リスクずリタヌンの䞡方がありたす。最先端の機胜ず呌ばれるのも、そのためです。ブラりザレベルの画像遅延読み蟌みの難しさは理解し぀぀ありたすが、パフォヌマンスを向䞊させるために䜿甚するメリットも芋えおきたした。

写真撮圱: Frankie Lopez出兞: Unsplash