«前の日記(Sat, 04 Sep 2010 (平成22年)) 最新 次の日記(Mon, 06 Sep 2010 (平成22年))» 編集 RSS with tsukkomi RSS without tsukkomi

実験的「実験的日記」


Sun, 05 Sep 2010 (平成22年) [長年日記]

_ lenny で gzip 圧縮を使う

上の「Web デザイナのための HTML チューニング入門」のほうで YSlow が紹介されていて、いつ入れたかすっかり忘れてしまってたのだけど YSlow はインストールしてあるのでこの日記をチェックしてみたら、"Compress components with gzip" が F と評価された。設定しているつもりだったのだけど、どうやら忘れていたらしい。ということで、調べてみると mod_deflate を使うようだ。mod_filter と組み合わせるらしい。

/etc/apache2 に潜ってみると mods-available とか mods-enabled とかいうディレクトリがあって、ここをいじればいいらしいということはわかった。どうするのが Debian 流なのかググッてみたら「ubuntu(Debian 系 Linux) の Apache2.2 の設定管理」というページが見つかった。a2enmod というコマンドを使うとのこと。

$ sudo a2enmod filter
$ sudo a2enmod deflate

こうして、必要なモジュールを組み込んだら「サイトのコンテンツ全てを gzip 圧縮する」に掲載されてた設定をちょっとだけ変えて、/etc/apache2/mods-enabled/deflate.conf にこう書いた。

<IfModule mod_deflate.c>
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

FilterDeclare Compression CONTENT_SET
FilterProvider Compression DEFLATE Content-Type $text/plain
FilterProvider Compression DEFLATE Content-Type $text/css
FilterProvider Compression DEFLATE Content-Type $application/xhtml
FilterProvider Compression DEFLATE Content-Type $application/xml
FilterProvider Compression DEFLATE Content-Type $application/xhtml+xml
FilterProvider Compression DEFLATE Content-Type $application/rss+xml
FilterProvider Compression DEFLATE Content-Type $application/atom+xml
FilterProvider Compression DEFLATE Content-Type $application/x-javascript
FilterProvider Compression DEFLATE Content-Type $image/svg+xml
FilterProvider Compression DEFLATE Content-Type $text/html
FilterProvider Compression DEFLATE Content-Type $application/javascript
FilterChain Compression

# Don't append Vary heder for specific files
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|zip|lzh|exe)$ dont-vary

# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
Header append Vary Accept-Encoding env=!dont-vary
</IfModule>

で、apache を再起動したら……

... waiting Syntax error on line 33 of /etc/apache2/mods-enabled/deflate.conf:
Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration
failed!

mod_headers というモジュールもいるらしい。

$ sudo a2enmod headers

今度は apache が正常に起動したので YSlow で再度チェックしてみたら、css がまだ圧縮できてない。deflate.conf に text/css は設定してあるし、HTTP ヘッダもチェックしてみたけど text/css として送られてきてるし、何が問題なのか現時点では不明。

YSlow の結果

原因追求はまた後日。なんかくやしい。

追記: おや、今もう一度 YSlow でチェックしてみたら CSS の圧縮ができてることになってる。ブラウザのキャッシュの影響でもあったのかな。疑問は残るけど、動作しているのだからまぁいいや。

目次

«前の日記(Sat, 04 Sep 2010 (平成22年)) 最新 次の日記(Mon, 06 Sep 2010 (平成22年))» 編集