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