【WEBアプリ高速化】Apacheのモジュール「mod_deflate」と「mod_filter」でデータを圧縮し転送量を削減する
- 公開日
- 更新日
- カテゴリ: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 」ボタンをクリックします。
ちなみに、今回のデモンストレーションでは、以下のような結果になりました。
モジュール導入前
以上で設定は完了です。
データ圧縮の関しては、設定すればページ表示速度が速くなるので是非行っておきたいところです。 また、データ圧縮は Google PageSpeed Insights でも評価対象になっていますので、指摘された場合は設定してみてください。
ただし一点注意すべきことがあります。
今回のデータ圧縮に関しては、「CPU リソースを犠牲にして表示速度を上げる」という事になりますので、 サーバのスペックと相談しながら導入・設定を行っていく事が大切です。 設定した後は、サーバリソースの監視を行う事も忘れないでください。