RitoLabo

【WEBアプリ高速化】Apacheのモジュール「mod_deflate」と「mod_filter」でデータを圧縮し転送量を削減する

  • 公開:
  • 更新:
  • カテゴリ: linux Apache
  • タグ: Linux,CentOS,Apache,Amazon Linux,mod_deflate,mod_filter,Google PageSpeed Insights,httpd,2.4,httpd.conf,module,Tuning,compression

WEBアプリケーション表示速度高速化シリーズと題しまして、第一回目は Apacheのモジュール「mod_deflate」と「mod_filter」を設定します。 WEBサイト表示時の転送データを圧縮する事で、転送量が削減され、ページ表示速度の高速化につながります。

尚、今回のデモンストレーションの環境としてはlinux CentOS7.xを想定していますが、Amazon Linuxでも同様の手順で行えます。

mod_deflateとmod_filterが組み込まれているか確認

まずはApacheにmod_deflateが組み込まれているか確認します。
Apache 2.4の場合は「/etc/httpd/conf.modules.d/」にモジュール系の設定がまとめられているのでそこを確認していきます。
vimコマンドを使って「00-base.conf」を開きます。

# vimコマンドを使って「00-base.conf」を開く
vim /etc/httpd/conf.modules.d/00-base.conf

以下の記述があるか確認します。無ければ追加、コメントアウトされていれば外します。

LoadModule deflate_module modules/mod_deflate.so
LoadModule filter_module modules/mod_filter.so

もし追加、コメントアウトを外した場合はここで一度httpdを再起動します。

# 再起動
service httpd restart

「mod_deflate」と「mod_filter」の設定

httpd.confに、設定を記述していきます。
vimコマンドを使って「httpd.conf」を開きます。

# vimコマンドを使って「httpd.conf」を開く
vim /etc/httpd/conf/httpd.conf

以下の記述を追加します。

<IfModule mod_deflate.c>
DeflateCompressionLevel 1
<IfModule mod_filter.c>
FilterDeclare COMPRESS
FilterProvider COMPRESS DEFLATE "%{CONTENT_TYPE} =~ m#^text\/#i"
FilterProvider COMPRESS DEFLATE "%{CONTENT_TYPE} =~ m#^application\/(atom\+xml|javascript|json|rss\+xml|xml|xhtml\+xml)#i"
FilterProvider COMPRESS DEFLATE "%{CONTENT_TYPE} =~ m#^image\/(svg\+xml|vnd\.microsoft\.icon)#i"
FilterChain COMPRESS
FilterProtocol COMPRESS DEFLATE change=yes;byteranges=no
</IfModule>
</IfModule>

ちなみに、「DeflateCompressionLevel 1」についてですが、ここの数値は1~9で設定可能で、 数値を大きくしていく事で、圧縮率が高くなります。
ただし、圧縮率を上げるとCPUの負荷も高くなりますので、適宜リソースと相談しながら設定してください。
ちなみに、数値を上げても圧縮率としては倍々で上がっていくわけではありませんので、1でも十分に圧縮されます。

Apacheを再起動します。

# 再起動
service httpd restart

圧縮できているか確認

設定は以上ですが、きちんと圧縮できているか確認します。
Port80 Software Evaluation Tools というサイトで確認できますので、設定してサイトのURLを入力して結果を確認してみましょう。
アクセスしたら、以下の部分にURLを入力し、「check」ボタンをクリックします。

URLに入力する

ちなみに、今回のデモンストレーションでは、以下のような結果になりました。

モジュール導入前
モジュール導入前
見ての通り、圧縮は行われていません。
モジュール導入後
モジュール導入後
40.0%圧縮された事が確認できます。

まとめ

以上で設定は完了です。
データ圧縮の関しては、設定すればページ表示速度が速くなるので是非行っておきたいところです。 また、データ圧縮はGoogle PageSpeed Insightsでも評価対象になっていますので、指摘された場合は設定してみてください。

ただし一点注意すべきことがあります。
今回のデータ圧縮に関しては、「CPUリソースを犠牲にして表示速度を上げる」という事になりますので、 サーバのスペックと相談しながら導入・設定を行っていく事が大切です。 設定した後は、サーバリソースの監視を行う事も忘れないでください。