mod_deflateで圧縮
Apacheモジュールのmod_deflateを使用すれば、サーバ→クライアントでやり取りするデータを圧縮することができ、トラフィック量の低減が期待できる。
a2enmod コマンドで deflate と headers を読み込むように設定する。(Headerディレクティブを使用する為、mod_headersも読み込ませる必要がある)
$ sudo a2enmod deflate $ sudo a2enmod headers
続いて、/etc/apache2/mods-enabled/deflate.conf を以下のように編集する。
$ sudo vi /etc/apache2/mods-enabled/deflate.conf <IfModule mod_deflate.c> # 1〜9の値で圧縮率の設定(数字が大きくなると圧縮率が大きくなる) DeflateCompressionLevel 6 AddOutputFilterByType DEFLATE text/html text/plain text/xml <Location /> # DEFLATEの有効化 SetOutputFilter DEFLATE # Netscape 4.0X の場合は圧縮しない BrowserMatch ^Mozilla/4\.0[678] no-gzip # Netscape 4.X以上 / Firefox / MSIEでは圧縮(htmlテキストのみ) BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/5 gzip-only-text/html # 拡張子による制限(gif/jpg/png は圧縮しない) SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary # Proxyサーバで適切なキャッシュ処理が行われるように、HTTPのVaryレスポンスヘッダを追加 Header append Vary User-Agent env=!dont-vary </Location> </IfModule>
GIFやJPGファイルは元々圧縮されたファイルなので、圧縮の意味は無くCPUを無駄に消費してしまうので、上記ではこれらのファイルは圧縮の対象から外すような設定を行っている。
ちゃんと圧縮されたかどうかは以下のサイトで確認することができる。
結果表示が、Compression status: Compressed (gzip) になっていればきちんと圧縮されている。
http://www.port80software.com/surveys/top1000compression/#checkyoursite