google pagespeed insights 得点向上のための改善 - vasily...
TRANSCRIPT
Google PageSpeeds Insights得点向上のための改善
Presented by
Created by Kubo Shizuma
期間 2015.8.3 ~ 2015.8.13
久保 静真
VASILY フロントエンド インターン 成果報告
プロフィール
Created by Kubo Shizuma
久保 静真
東京大学工学部システム創成学科
VASILY インターン 2015.8.3~2015.8.13
学生向けイベントキュレーションサイト facevent ( http://facevent.jp/ )の開発を契機にプログラミングの世界に入る。
その後、 facevent の開発チームで他サイトも作成。また、それと平行して長期インターンを 2 社経験。
現在、プログラミングスクール TECH::CAMP メンターや他 Rails 開発に携わる。
目的と目標
Created by Kubo Shizuma
テーマiQON の PC トップページにおいてGoogle の PageSpeed Insights の点数を上げる
PageSpeed Insights は、ウェブページのコンテンツを解析し、ページの読み込み時間を短くするための方法を提案してくれる。
初期状態
Created by Kubo Shizuma
Google からのメッセージ
修正が必要
修正を考慮
・画像を最適化する ・ブラウザのキャッシュを活用する
・スクロールせずに見えるコンテンツのレンダリングを ブロックしている JavaScript/CSS を排除する ・サーバーの応答時間を短縮する
JavaScript/CSS
Created by Kubo Shizuma
1. スクロールせずに見えるコンテンツのレンダリングを ブロックしている JavaScript/CSS を排除する
JavaScript
下記のように、 html に async 属性を付与。このようにすることで、 JavaScript の読み込みを遅らせ、ページの読み込みを妨げないようにする。 <script async src="my.js">
JavaScript リソースで document.write を使用している場合は、非同期の読み込みを安全に使用できません。 document.write を使用するスクリプトは、別の方法を使用するように書き直すことをおすすめします。 また、 JavaScript を非同期的に読み込む際に、ページで互いに依存している複数のスクリプトを読み込む場合は、アプリケーションで適切な依存関係の順序でスクリプトを読み込むように注意を払う必要があります。
引用: Google
JavaScript/CSS
Created by Kubo Shizuma
CSSCSS ファイルを html の head 内にインライン化する。インライン化では CSS の読み込みをせずに直接 head 内に style を記述する。
<head> <style>…</style></head>
<head> <style> <link rel…> </style></head>
大きな CSS ファイルの場合は、スクロールせずに見える範囲のコンテンツのレンダリングに必要な CSS を特定してインライン化し、残りのスタイルの読み込みはスクロールせずに見える範囲のコンテンツの後まで遅らせる必要があります。
引用: Google
画像の最適化
Created by Kubo Shizuma
ⅰ. static な画像の最適化
手動で画像の quality 、メタデータの削除
ⅱ. CMS で登録した画像の最適及び新しい サイズの画像の生成
初期: 750x750 、 300x300 の 2 種類 =>quality の最適化、メタデータの削除さらに、サイズ 150x150 の small サイズを準備
メタデータ:撮影日時やカメラの設定、画像加工ソフトの 情報などのデータ。今回は著作権がクリアな素材であるため 削除を行う。
画像の最適化
Created by Kubo Shizuma
* AWS S3 内にて一括で画像の最適化及び新しいサイズの 画像を生成するための batch ファイルを作成。 * AWS S3 内の画像を一括でダウンロードし backup フォルダを作成する batch ファイルを作成。
画像の最適化
Created by Kubo Shizuma
ⅲ. CMS で登録時に画像が最適化されるように変更
CMS で記事を登録時に画像を最適化するように変更 =>quality ・サイズの最適化、メタデータの削除
ブラウザのキャッシュ
Created by Kubo Shizuma
3. ブラウザのキャッシュを活用する
画像内のメタデータにキャッシュに関するデータを追加 画像のメタデータに Cache-Control: max-ageヘッダーの設定
* AWS 内の任意のフォルダにメタデータを追加するための batch ファイルを作成。
遅延ローディング
Created by Kubo Shizuma
4. 画像を遅延ローディングする ⅰ. jQuery プラグイン lazy-load を導入
画面下部のアイテムランキングの画像を遅延ローディング
遅延ローディング
Created by Kubo Shizuma
ⅱ. カルーセルの画像を遅延ローディング
カルーセルで初期で表示される画像とその両隣の画像以外を遅延ローディング ( はじめにカルーセルを移動するタイミングで残りの画像を読み込む )
学び
Created by Kubo Shizuma
所感
◇ 35/100 から 85/100 まで点数を上げられて、 目標に到達したので達成感!
◇ 78/100 で目標の 80 点まで若干届かなかったときは焦った。
◇ facevent は PageSpeed Insights で点数が おそろしく低いのでこちらも改善しないと…
学び
Created by Kubo Shizuma
◇ 開発から deploy までの一連の流れと deploy の責任と楽しさ
◇ 自分の技量の足りなさと今後の指針
インターンを通して
今回のインターンでは、この PageSpeed Insights以外にもタスクをこなし、社員さんと同じように deploy まで作業でき、直接技術的な手ほどきも受けられてとても勉強になりました!ありがとうございました!!