YSlowを参考にした高速化
自分がYSlowでよく引っかかるポイント
manifestに引き続き、今回はレガシーなウェブの技術仕様の中で高速化をがんばります。みんな大好きYSlow先生に色々訊いてみました。
今回書いたことをやったら、a-blog cmsのサイトのYSlowでのGrade判定がDからBに向上しました。ファイル数減らしたり、cssにもExpiresを設定するかとかの微妙なラインは問題を先送りしてますが。
FとかEのランクで、先生に怒られ気味な項目
- Make fewer HTTP requests
- HTTPリクエストの数を減らします。単純に読み込みファイル数を減らすということ。CSSの数を減らして、画像はCSS Spriteでゴニョる。CSS SpriteってRPGツクールを思い出す。
- Add Expires headers
- コンテンツキャッシュの賞味期限を長めに設定する。CSSとかはよく微調整するので、画像とJSに合わせるとこんなん。
- Compress components with gzip
- Lolipopはもしかしてサーバーが対応してない?.htaccessに、SetOutputFilter DEFLATEって書いただけで500になる。参考:YSlowでウェブサイトのパフォーマンスを改善: gzip圧縮を有効にする
- Put CSS at top
- CSSはhead要素内でも上のほうに置く。CSSは並列取得できるからさっさと読ませる。
- Put CSS at bottom
- Javascriptはhead要素内の最下部に置く。Javascriptは並列取得できない&解釈が先に進まない。シーケンシャルに1つずつ解釈するため、Jsの数が多くてもパフォーマンスが下がる。
- Configure entity tags (ETags)
- ETag自体はファイルのIDみたいなもの。基本的には一切無くていい。ETagをちゃんと活用するなら話は別だけど。
.htaccessで出来ること
Expires, ETags, gzipあたりはhtaccessから制御できる。ただし、ロリポのgzipのように許可されていない記述を書くと、500エラーを噴出し始めるのでご注意。
### Add Expires headers <filesmatch "\.(jpg|gif|png|js)$"> ExpiresActive on ExpiresDefault "access plus 1 month" </filesmatch> ### Compress components with gzip SetOutputFilter DEFLATE BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary Header append Vary User-Agent env=!dont-vary ### Configure entity tags FileETag None
ハジっこは囓っておいたほうが?
Webページの高速化については、なるべくメンバー全員が知っておいたほうが良さそう。その上で、パフォーマンスの目標ラインをコントロールする主導者も必要になる。
Googleが検索結果の評価に、ページの表示速度を加味するとかいう話があったりなかったりというところで、いつまでも無頓着なままではいられない領域な気がしている。