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でコンテンツの圧縮転送