2ch の危機を救った
(笑) HTTP の gzip 圧縮。Apache だと mod_gzip というモジュールがあるのでこれで実験。
# うち(sake-nikki.dyndns.org) みたいに CPU パワーは余ってるけど回線が細い、ところには効果があるはず。
まず配布元から最新版を持ってくる。 現時点では mod_gzip.c (1.3.19.1a)
apxs を使ってモジュールをコンパイル。
$ /usr/sbin/apxs -i -c mod_gzip.c
httpd.conf に以下のような記述を追加。
LoadModule gzip_module modules/mod_gzip.so
AddModule mod_gzip.c
<IfModule mod_gzip.c>
LogFormat "%h %l %u %t \"%r\" %>s %b mod_gzip: %{mod_gzip_compression_ratio}npct." common_with_mod_gzip_info
LogFormat "%h %l %u %t \"%r\" %>s %b mod_gzip: %{mod_gzip_result}n In:%{mod_gzip_input_size}n Out:%{mod_gzip_output_size}n:%{mod_gzip_compression_ratio}npct." common_with_mod_gzip_info2
CustomLog /var/log/httpd/gzip_log common_with_mod_gzip_info2
mod_gzip_on Yes
mod_gzip_minimum_file_size 300
mod_gzip_maximum_inmem_size 60000
mod_gzip_keep_workfiles No
mod_gzip_temp_dir /var/tmp/
mod_gzip_item_include handler cgi-script
mod_gzip_item_include handler perl-script
mod_gzip_item_include mime application/x-httpd-php3
mod_gzip_item_include file "\.php3$"
mod_gzip_item_include mime text/*
# mod_gzip_item_include image/*
mod_gzip_item_exclude file "\.js$"
mod_gzip_item_exclude file "\.css$"
mod_gzip_min_http 1001
LogLevel Debug
</IfModule>
日本語での解説はApacheにmod_gzipを組み込んで高速化する が分かりやすいのではないかと(手抜き)。
で、さっそく試すが、何故だか自宅サーバの Squid(2.3 stable4) を経由するして sake-nikki.dyndns.org に繋ぐと HTTP/1.0 でのアクセスになってしまい、圧縮が掛からず (squid を通さなければ HTTP/1.1 になる)。はて。 VMWare 上の IE5.5 でも同様だし、いまいち理由が判然としない。
squid のせいかと思って外の (うちの会社の) サーバを見に行くと、ちゃんと HTTP/1.1 で接続してる。 apache のログを見ても、sake-nikki.dyndns.org に HTTP/1.1 で接続してるクライアントも存在する。 外のサーバから
$ telnet sake-nikki.dyndns.org 80 GET / HTTP/1.1 Host: sake-nikki.dyndns.org Accept-Encoding: gzip
と telnet で直叩きすると、ちゃんと gzip 圧縮されたレスポンスが返ってくる。・・・うーん。謎。 が、もう朝なので取り敢えず断念。まあいいや。
sake-nikki.dyndns.org へそれなりのクライアントでアクセスする場合、HTML ファイル等の転送が速くなってるはずです。多分。