このサイトのTOPでYouTube動画を複数貼り付けしているが、そのおかげでページスピードがかなり遅くなってしまったため、何か良い手はないか調べてみたら、あった。
埋め込みしたYouTube動画を遅延読み込みさせる!
iframeに任意のclass名をつける。
「src」を「data-src」に書き換える。
<iframe class="youtube" data-src="https://www.youtube.com/embed/~"~></iframe>
こうすることでsrc属性が無くなるので、HTMLレンダリング中は動画の読み込みがスルーされます。
Javascriptで以下のような処理をさせます。
- 任意のclass名(ここでは”youtube”)
- iframeを取得
- そのiframeに「data-src」属性があったら「data-src」の値(URL)をsrc属性の値にセットする
- 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の埋め込み時に重宝するかと。