作成したウェブページを表示するまでの時間改善
- ウェブページの読み込み速度/時間を計測
- 読み込み速度を改善するため、各ページを大幅に書き換え
- 効果があった YouTube の動画 iframe を Link に変更
- ウェブページの読み込み速度/サイズ/タイミング を解析
- 読み込み時間を計測するためのJavascript
ウェブページの読み込み時間を計測する
自分のウェブページの読み込み時間が、まともなのか、遅いのかを具体的に調べるために下記のホームページを利用させてもらっています。
Google のウェブ パフォーマンス ツール
PageSpeed Insights
注意・・・Internet Explorerではうまく動作しないことがあります。
読み込み速度を改善するため、各ページを大幅に書き換え
時々読込みが遅く、スムーズな閲覧ができない時がある。
●全体の容量を小さくしたり、読み込み効率を上げるため、下記のような書き換えを実施、ほぼ完了。
- 各ページのファイル容量を小さくするため、無駄な部分を削除
- 左側に設置していた縦長メニューを無くした
- 大きなページを、2~6分割して細分化
- 画像ファイルを再圧縮し容量を縮小
- CSSファイルを共通化し、さらに無駄を省いて縮小
- 解析用script の読み込み位置を最後に設置
- 全てのページに記入していた画像処理などの link や script も最後に設置
- 無駄な画像拡大表示を止め、拡大処理用の script を削除した
- 更新履歴の行数が増えたので、順次別ファイルにしている
どの程度の効果が出るかわからないが、分割したページは多少読込みが早くなった気がする。
効果があった
YouTube の動画 iframe を Link に変更
紹介した PageSpeed Insights で計測すると、時々極端に時間のかかるページがあることに気付いた。
特にドローンのページに多く、YouTube の動画の画面をページに張り付けていました。
例えば
<iframe src="https://www.youtube.com/embed/sKcFuDkM-Y0"></iframe>
のように動画の画面を張り付けている箇所を
<a href="https://www.youtube.com/watch?v=sKcFuDkM-Y0" target="_blank">動画と飛行データ合成</a>
のように、YouTube の動画ページにリンクを張るように変更すると、ページの表示がかなり早くなりました。
PageSpeed Insights での計測結果が
64 から 100 になりました。
ホームページの 読み込みサイズ と 読み込まれるタイミング も解析
ホームページを表示させる時間の計測は別項目で実施したので、今回は表示するために読み込むサイズの計測をしてみた。
html本体ファイルや画像ファイル等を全てを読み込むと、どのぐらいのサイズになるのか適当に考えていました。
表示速度やサイズだけでなく、いろいろ解析してくれるWebサービスを利用させていただき調べてみました。
- Analyze your site’s speed というホームページがわかりやすく解析も豊富です
調べたいページのURLを入力するだけで解析してくれます。 - Fully Loaded Time、Total Page Size が簡単にわかります
- 個々の読込み時間や、読み込まれるタイミングも解析表示してくれます。
ホームページの読み込み時間を計測する Javascript を検討
ホームページの読み込み速度が遅いとか、読み込みに時間がかかるという記事やブログを見かける。
調べると以前から結構話題にはなっているようです。
せっかく通信環境が整い通信速度が上がったが、画像や動画、表(Table)を多用し、さらにホームページのサイズが大きくなったため、読込みに時間がかかてしまう。
画像を圧縮したり、表(Table)の使用を減らしたり、Javascriptの読み込みをページの最後の</body>の直前に持ってきたりして試行錯誤しているが、実際にどの程度に時間がかかっているか計測してみたくなった。
全てのページを測定するのではなく、ページサイズが大きく結構画像や表(Table)を使用したりYoutubeの動画の画面を張り付けている場合の影響もページの読み込み時間を計測すれば、大体の感覚がつかめると判断してテストしてみました。
使用するのは簡単なJavascriptです。大まかな時間を測定します。
- まず<head>内に記入しておく部分です
<script language="Javascript">
<!--
mydate = new Date();
starttime = mydate.getTime(); /* 開始時刻を取得 */
// -->
</script> - <body>に追加記入します
<body onload="calc_time()"> 他の記述があれば最後尾にスペースをあけて追加します - 計測したデータをページ内の表示させたい場所に記入
<FORM NAME="myFORM1">読み込み時間 <INPUT TYPE="TEXT" NAME="mytime">
</FORM> - </body>の直前に記入します
<script language="Javascript">
<!--
function calc_time() /* 時間を測定する関数 */
{
mydate = new Date();
endtime = mydate.getTime(); /* 終了時刻を取得 */
difference = (endtime - starttime)/1000;
document.myFORM1.mytime.value = difference + " 秒";
}
// -->
</script>
ここで表示される読込み時間には、サーバーが応答するまでの時間は含まれていませんので、込み合っている時間帯や処理が遅いサーバーの場合、表示にはさらに時間がかかります。