しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

IIS で Brotli が使える公式モジュールがリリースされたので試す

Twitter を見てると IIS 向けに Microsoft 公式で Brotli が使えるモジュールが GitHub でリリースされていたので、さっそく飛びついてみました。

まだソースコードでの公開なのでビルドする必要がありますが、インストーラーで配布されるでしょう。

IIS の Brotli モジュールは有償配布だったり、コミュニティベースでビルドが必要なものだったりと散乱してましたが、やっと Microsoft が動いたという点は評価したいところです。

とはいえ、圧縮モジュールをインストールしても IIS はブラウザが送ってくる Accept-Encoding の順番を優先する挙動になっているので、大体最後になっている Brotli は使われないという問題がありました。

なので中の人に聞いてみたら、良い回答が返ってきました。

この辺りが改善されないと Brotli を使えないと思ってましたが、どうやら Windows Server Version 1803 で改善されたようです。具体的には scheme に書いた順番が優先されるようになったみたいですね。

さて、実際にモジュールをビルドして試します。README 通りに build.cmd を実行すると Windows 8.1 SDK が要求されたので、Visual Studio で開いてターゲットを変えた上でビルドしました。

f:id:shiba-yan:20180501230149p:plain

bin ディレクトリに iiszlib.dll と iisbrotli.dll が出来ているので、それを inetsrv にコピーして httpCompression に登録します。Windows Server Version 1803 を用意するのが面倒だったので、リリースされたばかりの Windows 10 Version 1803 を使いました。

このあたりは IIS Manager で行うより applicationHost.config を弄ったほうが早いかもしれません。

f:id:shiba-yan:20180501230241p:plain

この時に br が gzip より上になるように書く必要があります。

あとは IIS を再起動して、適当に HTTPS でページにアクセスすると Brotli が使われていることが確認できるはずです。インストーラーで提供されれば、一瞬で環境が整うはずです。

f:id:shiba-yan:20180501230252p:plain

ちなみに br と gzip の順番を入れ替えると、ちゃんと gzip が使われるようになりました。

インストールするのすら面倒な場面があるので、次期 Windows Server 2019 では標準で入ってくれると良いですね。ちなみに Azure App Service は残念ながら 2019 がリリースされるまで難しそうです。