読み込み速度に合わせてコンテンツや画像の表示を切り替える備忘録です。 動画サイトとかYoutubeで低速モードで、粗めの動画にして、動画が止まらないような仕組みがありますよね。イメージとしては同じです。
ページの読み込み速度は回線の速度だったり、ブラウザの表示速度だったり、様々な要因で速度が変わってきますよね。今回は、その読み込み速度に合わせて、表示させる画像を「等倍画像」と「2倍寸画像」の画像を切り替えてみます。
実際は「等倍画像」と「2倍寸画像」の切り替えは端末の解像度で切り替えるべきだと思います。今回の紹介記事では、読み込み速度に合わせて、表示させるコンテンツを切り替えれる参考と思っていただければ幸いです。
読み込み速度に合わせて画像を切り替えるデモ
まずは実際に作成したデモページのご紹介です。
ファイルの読み込み速度を「Mbps」単位で表示させて、今回は「5Mbps」以下の場合は「等倍画像」を表示させるように分岐させています。
全体コード
まずはデモの全体コードをです。
Javascript
HTML
1.読み込み速度の計測方法について
読み込み速度の計測方法から説明していきます。 読み込み速度の計測については、以下のページを参考にさせていただきました。
画像を分岐させる速度を決める
定数「SPEED_FLAG」で画像を分岐させる読み込み速度を設定します。 Webページの読み込み速度の目安は以下を参考にしました。
今回は5.0Mbpsとしました。 Webサイトの閲覧:下り1Mbps〜10Mbps
測定用画像のサイズを指定する
測定用画像は以下のサイトからダウンロードしていますが、実際はサイト内の必ず読み込む画像を指定するのがいいと思います。
画像サイズは画像情報から確認。 今回のサンプル画像のサイズは「102117」で大体102KBですね。 Chromeからは 検証モード→Network→画像をクリック→content-lengthで確認できます。 (macの場合、画像ファイルを右クリックで、情報を見る→サイズ確認でも同じです)
バイト単位をビット単位に変換する
画像のファイルサイズ「バイト単位」を回線速度計測の「ビット単位」に変換しておきます。
画像の読み込み速度の計測スタート
「startTime」で読み込み開始時間を取得します。
測定用画像はキャッシュしないように、読み込み開始時間をパラメータに付与
測定用画像にキャッシュが残ると、1回目の読み込みと、2回目の読み込みで読み込み速度が変わってしまうので、キャッシュさせないように、読み込み開始時間をパラメータとして付与しておきます。
Mbpsに変換する
測定した時間からmbps単位で速度を出します。
5.0Mbpsで処理を分岐させる
「SPPED_FLAG」に指定した速度で処理を分岐させます。
2.画像を読み込む処理
画像を読み込む処理を用意します。画像の読み込みについては、以下サイトを参考にさせていただきました。
HTMLの「img」タグにsrcは記載せずに、回線早い時用のsrc「data-fast-src」回線遅い時用のsrc「data-slow-src」を用意します。srcタグがあると、JSで速度判別前に結局読み込まれてしまってりします。
回線が早いの時は「data-fast-src」を遅い時は「data-slow-src」をimgの「src」として読み込みます。
あとは、分岐に合わせて関数を指定すればOKです。
完成したデモがこちら
最後に
今回は読み込み速度に合わせてコンテンツや画像を切り替える方法をご紹介いたしました。
動画や重たいコンテンツを表示させたい時に、読み込み速度で分岐させるとユーザビリティがアップしそうですね。