前回、圧縮の性能が高いと言われるBrotliを試してみた。

Googleの圧縮アルゴリズムBrotliを試してみた


性能は圧縮後のファイルサイズで確認して、

容量が標準のgzipよりも少なくなっていることを確認した。


これはApacheサーバにも入れてみたい!

ということでサーバにインストールしてみた。




はじめにサーバの環境だけど、

さくらのVPS 512

Ubuntu 14.04

Apache 2.4.25

当サイトをHTTP/2対応して表示の爆速化してみた


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を確認し、


phpinfo_brotli_confirm


apache2 handlerのLoaded Modulesにmod_brotliの表記があることを確認する。

mod_brotliがあれば、サイトを開き、開発ツールのネットワークで

どのファイルでも良いので、サーバから送信されているファイルのヘッダーの中身を確認してみると、


developer_tool_brotli_confirm


Content-Encodingがbr(Brotli)で圧縮されているものがある。

※標準であればContent-Encodingはgzipと表示される。


諸々のファイルを確認したところ、

すべてがBrotliで圧縮されているわけではないみたいだけど、

とりあえずこれでサーバの通信量を減らしたエコなサーバになれたかな?


補足

Brotliによる圧縮はhttpsからはじまるURLでないと有効にならないらしい。

常時SSL化はSEO上効果はあるか?