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 ファイル等の転送が速くなってるはずです。多分。