Apache2 表示が遅いのでコンテンツの圧縮転送を設定した

「イントラネットの表示が遅くて、仕事の効率下がりますぅ」と言われた。

確かに遅い。理由は簡単。「だって、海外(アメリカ)にサーバがあるんだもーん。数Mbpsしか帯域が無いし、その帯域のほとんどがSAPなどの重要アプリに割り当てられているので、イントラネット用に使えるのは極少帯域なんですー。 」と言い訳を言っても解決しない。

そういえば昔、2ちゃんねるが帯域を食いまくって運用停止を迫られたとき、圧縮転送を使って問題解決した、というようなストーリーを読んだ覚えがあるので調べてみた。Apache1.3系ではmod_gzip、Apache2系はmod_deflateを使えばよいことが分かった。

 

■Apache2のhttpd.confでmod_deflateを設定する

/etc/apache2/httpd.confを開いて、バーチャルホスト設定の手前の適当な場所にmod_deflateの設定を入れた。

   <IfModule mod_deflate.c>
DeflateCompressionLevel 9
AddOutputFilterByType DEFLATE text/html text/plain text/xml
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpg|jpeg|png)$ no-gzip dont-vary
</IfModule>

 

バーチャルホストの設定内で、設定を加えた。

<VirtualHost 10.2.126.93:80>
ServerName intranet.mycompany.com
ServerAdmin webmaster@mycompany.com
DocumentRoot /export/home/www/public_html
ScriptAlias /cgi-bin/ /export/home/www/cgi-bin/
ErrorLog /export/home/www/logs/error_log
ScriptLog /export/home/www/logs/script_log
CustomLog /export/home/www/logs/access_log common
# 圧縮転送を有効にする。
<IfModule mod_deflate.c>
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
# 下のふたつは、圧縮転送されているかを確認後、コメントアウトしておく。
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%) %{User-agent}i' deflate
CustomLog /export/home/www/logs/deflate_log deflate
</IfModule>

</VirtualHost>

 

参考ページ

mod_deflateによるコンテンツの圧縮転送

[Debian][Apache] Apache2でコンテンツの圧縮転送