2013/07/27

Debian の Apache では Javascript の gzip 圧縮は有効になってない?

Google の PageSpeed Insights って知ってますか?
  • https://developers.google.com/speed/pagespeed/insights
Web ページの表示速度を最適化させるために、あらゆるやるべきことを教えてくれます。簡単にでることもあれば、こんなの無理だろという指摘まで...

最近は、このあたりを最適化してるかしてないかで Google の表示順位も変わってくるらしいので、暇なときに簡単にできそうな問題は修正しておくと良いです。

ところで、僕のある Dokuwiki のサイトを PageSpeed Insights にかけてみたらこんな結果が出てきました。
以下のリソースを gzip で圧縮すると転送サイズを 294.4 KB(71%)削減できます。
    http://example.com/lib/exe/js.php?tseed=1373562644 を圧縮すると 294.4 KB(71%)削減できます。
ん?という感じです。Apache の gzip 圧縮は mod_deflate で有効になっているはずなのですが、確かに HTTP ヘッダを観測してみると、gzip でも deflate でも圧縮されてません。


Apache の設定がおかしい?

確かに、この JS ファイルは大きいので、圧縮するべきです。なので、一応 mod_deflate の設定を確認して見ました。環境は Debian wheezy です。
# /etc/apache2/mods-enabled/deflate.conf
<IfModule mod_deflate.c>
          # these are known to be safe with MSIE 6
          AddOutputFilterByType DEFLATE text/html text/plain text/xml

          # everything else may cause problems with MSIE 6
          AddOutputFilterByType DEFLATE text/css
          AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
          AddOutputFilterByType DEFLATE application/rss+xml
</IfModule>
text/javascript が指定されてないですね... これは、昔のブラウザ (Netscape とか IE6 とか) は、gzip 圧縮の対応がおかしかったりするみたいなのが、理由らしい?です。

でも、そうだとしたら application/x-javascript とかは何故含まれているんだろう?という疑問もありますけど。


解決方法

正直そんなブラウザは、僕はどうでも良いので、以下の1行を加えれば終了です。
          AddOutputFilterByType DEFLATE text/javascript
これで、service apache2 restart すれば JS の圧縮が有効になって、Google さんにも怒られなくなるはず。

0 件のコメント: