Youtube の動画の複数埋め込みをしたページの高速化

このサイトのTOPでYouTube動画を複数貼り付けしているが、そのおかげでページスピードがかなり遅くなってしまったため、何か良い手はないか調べてみたら、あった。

埋め込みしたYouTube動画を遅延読み込みさせる!

iframeに任意のclass名をつける。

「src」を「data-src」に書き換える。

<iframe class="youtube" data-src="https://www.youtube.com/embed/~"~></iframe>

こうすることでsrc属性が無くなるので、HTMLレンダリング中は動画の読み込みがスルーされます

Javascriptで以下のような処理をさせます。

  1. 任意のclass名(ここでは”youtube”)
  2. iframeを取得
  3. そのiframeに「data-src」属性があったら「data-src」の値(URL)をsrc属性の値にセットする
  4. 1〜3の処理をload後(画像含むページ全体の読み込み後)に実行
<script>
  function youtube_defer() {
    var iframes = document.querySelectorAll('.youtube');
    iframes.forEach(function(iframe){
      if(iframe.getAttribute('data-src')) {
        iframe.setAttribute('src',iframe.getAttribute('data-src'));
      }
    });
  }
  window.addEventListener('load', youtube_defer);
</script>

Page Speed Insightの点数は7アップ!(モバイル)

この遅延読み込みの処理をする前の点数は19だったが、処理後は26になった。

メインビュアルのフェードインモーションや、アドセンスの設置場所自動設定をしており、まだまだ改善の余地はある。

画像をwebpにしたり、Wordpress的にどこまでできるかわかってないが、ページの非同期遷移などもトライしてみたい。

次回は、iframe要素をレスポンシブ対応にする方法を紹介する。YouTubeやGoogleMapの埋め込み時に重宝するかと。

ナナイロ

ECサイト制作に強いフロントエンドエンジニア。Web関連のお役立ち技術情報を発信しています。 2025年の最新のAI生成コーディングのコースをUdemyに公開いたしました。爆速でコードを書きたい方は必見です!! さらに、今年(2025年)からVoicyのパーソナリティに挑戦し始めました!ラジオでWebエンジニアの生の声をお届けしています。