モジュールの有効化と設定
何度か使用してきましたが「a2enmod」コマンドを使用してリンクを作成してモジュールを有効化します。
一覧に表示されている「deflate」を入力するとmod_deflateが有効化されますので続けて設定を行っていきます。
vi /etc/apache2/mods-available/deflate.conf
とコンソールで入力して設定ファイルを開きます。
<IfModule mod_deflate.c>
# these are known to be safe with MSIE 6
# everything else may cause problems with MSIE 6
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
AddOutputFilterByType DEFLATE application/rss+xml
</IfModule>
と記述されていますがこれを以下のように書き換えます。
<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
</Location>
</IfModule>
特に重要なのは、圧縮の効果がほとんど期待できない画像(gif/jpg/png)に対しては圧縮処理を行わない点です。1~9で指定する圧縮率の設定はひとまず6にしています。当然ですが圧縮率を下げればCPUの負荷を減らすことができますし、負荷を考慮しない又は考慮しなくても大丈夫そうな高スペックCPUであれば9にしてみてもよいでしょう。自分のマシンはceleron430 1.8GHzなのであまり負荷をかけたくない思いもあり6にしてみました。
圧縮の効果を測定してみる
以下のサイトで通信データの圧縮ができているのかを測定してみます。
http://www.port80software.com/surveys/top1000compression/#checkyoursite
結果はこちら↓
結果を見ると以下のとおり結構な勢いで圧縮が行われているらしいことは確認できました。あとは実際の体感ですが、スマホから接続しても現居住地のPCからアクセスしてもなんだか大差が感じられず・・・。そもそもボトルネックになっているのがデータ量ではないのか、それとも圧縮を行っていない画像が多くてそれが回線を圧迫しているのか、もう少し調査してみる必要がありそうです。