前回、圧縮の性能が高いと言われる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でないと有効にならないらしい。




