前回、圧縮の性能が高いと言われるBrotliを試してみた。
性能は圧縮後のファイルサイズで確認して、
容量が標準のgzipよりも少なくなっていることを確認した。
これはApacheサーバにも入れてみたい!
ということでサーバにインストールしてみた。
はじめにサーバの環境だけど、
さくらのVPS 512
Ubuntu 14.04
Apache 2.4.25
Apacheのmod_brotliを調べてみると、2.4.26以降になっているので、
今回はGitHubに上がっているものからインストールしてみた。
インストールは下記のページを参考に、Ubuntuに合わせて適宜改変した。
https://github.com/kjdev/apache-mod-brotli
#mod-brotliのインストールに必要なパッケージを事前にインストールしておく sudo apt-get install apache2-dev libtool m4 automake git clone --depth=1 --recursive https://github.com/kjdev/apache-mod-brotli.git cd apache-mod-brotli sudo ./autogen.sh sudo ./configure sudo make sudo install -D .libs/mod_brotli.so /usr/lib/apache2/modules/mod_brotli.so -m 644
これでApacheにmod-brotliのインストールは終了。
続いて、Apache内でmod-brotliを有効にしてみる。
cd /etc/apache2/mods-available sudo emacs brotli.load
作成したbrotli.loadに下記の文字列を記述して保存する。
LoadModule brotli_module /usr/lib/apache2/modules/mod_brotli.so
sudo emacs brotli.conf
作成したbrolti.confに下記の記述を行い保存する。
<IfModule brotli_module> # Compression ## BrotliCompressionLevel: 0-11 (default: 11) BrotliCompressionLevel 10 ## BrotliWindowSize: 10-24 (default: 22) BrotliWindowSize 22 # Logging # Filter note BrotliFilterNote Input brotli_in BrotliFilterNote Output brotli_out BrotliFilterNote Ratio brotli_ratio #LogFormat '"%r" %{brotli_out}n/%{brotli_in}n (%{brotli_ratio}n)' brotli #CustomLog ${APACHE_LOG_DIR}/brotli_access.log brotli # Output filter AddOutputFilterByType BROTLI text/html text/plain text/css text/xml AddOutputFilterByType BROTLI text/css AddOutputFilterByType BROTLI application/x-javascript application/javascript AddOutputFilterByType BROTLI application/rss+xml AddOutputFilterByType BROTLI application/xml AddOutputFilterByType BROTLI application/json # Global output filer if necessary. # SetOutputFilter BROTLI # SetEnvIfNoCase Request_URI \.txt$ no-br </IfModule>
最後に、
sudo a2enmod brotli sudo /etc/init.d/apache2 restart
brotliモジュールを有効にしてApacheを再起動する。
再起動後にPHPInfoを確認し、
apache2 handlerのLoaded Modulesにmod_brotliの表記があることを確認する。
mod_brotliがあれば、サイトを開き、開発ツールのネットワークで
どのファイルでも良いので、サーバから送信されているファイルのヘッダーの中身を確認してみると、
Content-Encodingがbr(Brotli)で圧縮されているものがある。
※標準であればContent-Encodingはgzipと表示される。
諸々のファイルを確認したところ、
すべてがBrotliで圧縮されているわけではないみたいだけど、
とりあえずこれでサーバの通信量を減らしたエコなサーバになれたかな?
補足
Brotliによる圧縮はhttpsからはじまるURLでないと有効にならないらしい。