Picovert

画像遅延読み込み:ネイティブ・Intersection Observer・LCP の罠

2026-04-227分で読了

画像の遅延読み込みは、画像がビューポートに近づくまで読み込みを遅らせます。正しく実装すると、 画像の多いページの初期ページウェイトを 40〜70% 削減できます。誤った実装 — 最もよくある ケースは LCP 画像を遅延読み込みすること — では、最も重要なパフォーマンス指標に 500 ms 以上 が加算されます。

ネイティブ遅延読み込み

最もシンプルな実装は loading="lazy" HTML 属性です。ブラウザサポートは現在 96%+ です。サポートしていないブラウザは属性を無視して即座に読み込みます — JavaScript フォールバックは不要です。

LCP の罠:ヒーロー画像に遅延読み込みを絶対に使わない

最も一般的な遅延読み込みのミスは、ページの最初の表示画像(多くの場合 LCP 候補のヒーローや バナー画像)に loading="lazy" を追加することです。LCP 画像が遅延読み込みされると、 ブラウザはトリガーが発火するまでリクエストを遅延させ、LCP に 300〜600 ms が加算されます。

修正: above-the-fold 画像には loading="lazy" を追加しないでください。代わりに fetchpriority="high" を追加します。

遅延読み込みと WebP の組み合わせ

遅延読み込みは初期ロード時に取得する画像数を削減します。WebP への変換は各リクエストのサイズを 削減します。Picovert で画像を変換しましょう。

Next.js での遅延読み込み

Next.js の next/image はデフォルトですべての画像に loading="lazy"を適用します。LCP 画像には priority prop を追加して無効化します。priorityloading="eager"・プリロードリンク・fetchpriority="high" の 3 つすべてのシグナルを設定します。

よくあるミスのチェックリスト

  • above-the-fold 画像の遅延読み込み。
  • 遅延読み込み画像への width・height の指定漏れ。
  • 遅延読み込みを圧縮の代替として使用。 まず圧縮しましょう
  • すぐに表示されるカルーセル画像の遅延読み込み。