
今日はHTTP3との併用でさらに高速にBrotliの成り立ちについてみていくわ

今日はHTTP3との併用でさらに高速にBrotliの成り立ち

Brotliは、Jyrki AlakuijalaとZoltán Szabadka(英語版)により開発されたオープンソースのデータ圧縮ライブラリだ
BrotliはLZ77やLZ78とハフマン符号化、および2次文脈モデリング(英語版)処理の近代的な亜種がベースである。
Chrome、Opera、Firefox、Microsoft Edgeなど、Internet Explorerを除いた主要なブラウザはこのライブラリによる圧縮の恩恵を受けたWebブラウジングが可能である[5][6]。同じくGoogleにより開発されたZopfliと同じく、スイスのパンであるbrötli(英語版)に由来している[7]。
Brotliの最初の発表は2015年、webフォントのオフライン圧縮を目的にしてのことであった[8]。同年9月、Googleのソフトウェア技術者により汎用データ圧縮、特にHTTP圧縮(英語版)を目的とする改良がなされた版が発表される。 これはエンコーダの一部書き直しにより、圧縮率の向上、エンコーダ/デコーダ両方の高速化、ストリーミングAPIの改善、圧縮品質レベルの調整項目などが追加されたものであった。 加えてこの新しい版ではクロスプラットフォーム性の向上や使用メモリの削減もなされていた。
多くの汎用圧縮アルゴリズムと異なり、Brotliは事前に定義された120KBの辞書を使用している。 辞書は13000以上の共通の単語や熟語、テキストやHTMLドキュメントから構成された巨大なコーパスから生成される部分文字列から成っており[9][10]、小さいデータファイルに対する圧縮率を高めることに寄与している。
テキストファイルを圧縮する局面において、Brotliは一般的にDeflateに対し20%程の圧縮率の優越を、圧縮/伸長速度におおかた変化なく行うことができる。ストリーミング圧縮におけるBrotliのコンテンツエンコーディングタイプ[注 1]は”br”である。
Wikipedia
サポート状況
ブラウザ
- Google Chrome 49とそれ以降のバージョンでサポートされている[11]。
- Microsoft Edge はバージョン15から対応した[12]。
- Mozilla Firefox 44とそれ以降のバージョンでサポートされている[13][14]。
- Opera 36とそれ以降のバージョンでサポートされている[11]。
- Safariにおいては、Safari 11から対応した。
Webサーバー
- Apache HTTPサーバにおいては2.4.26で対応した。Brotliに対応するモジュールmod_brotliが追加されている[15]。
- Microsoft IISにおいては公式サポートも開発への取り組みもなされていないが、対応させるコミュニティモジュールが存在する[16]。
- nginxにおいては公式サポートも開発への取り組みもなされておらず、Googleの提供する ngx_brotliモジュールにより対応する[17]。
- Amazon CloudFrontにおいては2020年9月より、Brotliを使ってキャッシュ可能なレスポンスをエッジで自動的に圧縮できるようになった

Brotli圧縮で軽量化したデータをHTTP/3と言う高速プロトコルで転送することで
ウェブサイトが爆速になるわ