mod_deflateによるコンテンツ圧縮の設定
カテゴリ:Apache 2.2の設定
日時:2010/03/04 23:56
mod_deflateを利用すると、コンテンツをWebブラウザに転送する際にサーバ側で圧縮する。これにより、ネットワーク帯域を節約できる。
Gentoo Linuxでmod_deflateを使う場合は、Apacheをemergeする際に、/etc/make.confのAPACHE2_MODULESに
mod_deflateモジュールを組み込んだら、設定を行う。 まず、mod_deflateの設定ファイル(/etc/apache2/modules.d/00_mod_deflate.conf)を新規作成する。内容は以下の通り。
マニュアルでは、Netscape 4などコンテンツ圧縮に対応していない古いブラウザ用の設定も紹介されているが、当サイトでは指定していない。
設定が完了したら、
ログ関連の行はそのままでも動作に支障はないが、ログを取得すると負荷が高くなる。必要のないログは止めた方がよい。
Gentoo Linuxでmod_deflateを使う場合は、Apacheをemergeする際に、/etc/make.confのAPACHE2_MODULESに
deflateを指定しておく必要がある。
mod_deflateモジュールを組み込んだら、設定を行う。 まず、mod_deflateの設定ファイル(/etc/apache2/modules.d/00_mod_deflate.conf)を新規作成する。内容は以下の通り。
<IfModule deflate_module>
DeflateCompressionLevel 6
<Location /home/httpd>
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
Header append Vary env=!dont-vary
</Location>
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%) %{User-agent}i$
CustomLog /var/log/apache2/deflate_log deflate
</IfModule>
<Location /home/httpd>で、/home/httpd/以下をすべて圧縮する。ただし、
SetOutputFilter DEFLATE
</Location>
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-varyでGIF、JPEG、PNGファイルは対象外にしている。圧縮率は、
Header append Vary env=!dont-vary
DeflateCompressionLevel 6で指定。値は1~9で、数字が大きいほど圧縮率が高くなるがCPU負荷も高くなる。
マニュアルでは、Netscape 4などコンテンツ圧縮に対応していない古いブラウザ用の設定も紹介されているが、当サイトでは指定していない。
DeflateFilterNote Input instreamはログの設定。mod_deflateの動作確認用。
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%) %{User-agent}i$
CustomLog /var/log/apache2/deflate_log deflate
設定が完了したら、
/etc/init.d/apache restartでApacheを再起動し、Webサイトを適当に閲覧した後
# tail /var/log/apache2/deflate_logでログを確認する。圧縮されているのが確認できたら、再び/etc/apache2/modules.d/00_mod_deflate.confを開き、ログ関連の行をコメントアウトしてApacheを再起動する。
ログ関連の行はそのままでも動作に支障はないが、ログを取得すると負荷が高くなる。必要のないログは止めた方がよい。