Apache のmod_deflate を設定し、リソースを圧縮することで、ネットワークで送信されるバイト数を減らし、結果としてウェブページを表示するまでの時間の短縮を狙いたいです♪
わたくしたちの WordPress サイトを早く表示させたいのです♪
mod_deflate の設定前に確認すること
gzip への圧縮はサーバが行います。CPU を使います。したがいまして、CPU に余裕が無い場合は逆効果となる可能性がございます。
そこで、sar コマンドで確認しましたら、平均で数 % しか使用しておりませんでしたので、余裕があると判断いたしました。
なお、sar コマンドの使い方は、以前の投稿を参考にいたしました。
mod_deflate の設定手順
mod_deflate がインストールされているかどうか確認いたします。
vim /etc/httpd/conf/httpd.conf
次のように、すでに有効となっておりました。しかしながら、httpd.conf 内を検索いたしましても mod_deflate に関係する設定は、この1行のみでしたの。
LoadModule deflate_module modules/mod_deflate.so
そこで別途 mod_deflate の設定ファイルを作成し、Apache に読み込んでもらうようにいたします。
vim /etc/httpd/conf.d/deflate.conf
設定内容は次のようにいたしました。
# 画像以外全て圧縮する # DEFLATE フィルタ を有効にして圧縮を有効にする SetOutputFilter DEFLATE # 問題を抱えているブラウザに対して、圧縮が行われないようにする # Netscape 4.x は text/html 以外のタイプの圧縮を扱うことができない BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 は完全に deflate フィルタをオフ BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE は Netscape と判断されるが圧縮を行えるのでユーザーエージェントを修正 BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html # 画像は圧縮しない SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary # Proxy サーバで適切なキャッシュ処理が行われるように、HTTP の Vary レスポンスヘッダを追加 Header append Vary User-Agent env=!dont-vary # 出力に対して行なう圧縮の程度 DeflateCompressionLevel 5
文法テスト
[root@oki2a24 ~]# apachectl configtest Syntax OK [root@oki2a24 ~]#
Apache 設定再読み込みをして、反映させます。
[root@oki2a24 ~]# /etc/init.d/httpd reload httpd を再読み込み中: [root@oki2a24 ~]#
mod_deflate が機能しているかどうかの確認
Chrome のデベロッパーツールを使用して、レスポンスヘッダーを確認し、無事 gzip 圧縮が行われていることを確かめることができましの♪
- HTTP レスポンスヘッダーに「Content-Encoding: gzip」が追加されていることから、mod_deflate が機能していることが確認できた♪
おわりに
事の始まりは、Google の PageSpeed Insights にて、本サイトを診断したときにアドバイスのひとつとして、コンテンツを圧縮転送するとパフォーマンスがよくなるよ!といった趣旨の言葉をいただいたことでございました。
mod_deflate でしたら、気軽に導入できるかしらと思いまして、今回試させていただきました。
最後に、参考にさせていただいたページです。ありがとう存じます!
- PageSpeed Insights
- Enable Compression – PageSpeed Insights — Google Developers
- mod_deflate – Apache HTTP サーバ
- 実用 Apache 2.0運用・管理術(4):mod_deflateによるコンテンツの圧縮転送 (1/3) – @IT
- WordPressサイト用の.htaccess例 | dogmap.jp
以上です。