Brotli
Brotli が gzip に加えて何をしているかを見てみましょう。よく使われる単語の組み込み辞書、より大きなウィンドウ、時間とサイズを引き換えにする品質レベルです。
- ウィンドウ: 最大 16 MB
- 辞書: 122 KB
- 品質: 0-11
- 符号は文脈で変わる
用語の意味
- 組み込み辞書: すべての Brotli デコーダーが知っている約 13,500 語。エンコーダーは単語を番号で参照できます。
- 品質: Brotli の圧縮努力の設定(0 から 11)。高いレベルは数パーセント小さくするためにより念入りに探し、そのコストは何倍にもなります。
- 文脈モデリング: 直前に何が来たかで符号表を選ぶこと。文字の後に続く文字は、数字や空白の後に続く文字とは違うからです。
- ウィンドウ: 圧縮器が繰り返しを探せる範囲(どこまでさかのぼれるか)。gzip では 32 KB、Brotli では最大 16 MB です。
Brotli 辞書にある単語
好きなテキストを貼り付けてください。Brotli の辞書にある単語に印が付き、辞書が最も効く先頭 300 バイトとテキスト全体をバーで比較します。
読み込み中...
試してみましょう: 短い HTML ページを読み込んでみてください。数百バイトでは辞書が結果を決め、Brotli が gzip を大きく引き離します。
品質、サイズ、時間
同じテキストをすべての品質で圧縮します。4-6 まではサイズが急に下がり、時間はほとんど変わりません。10 と 11 は何倍もの手間をかけて、あと数パーセント縮めます。
読み込み中...
gzip との違い
最大 16 MB のウィンドウ
gzip がコピーできるのは直前の 32 KB からだけです。Brotli ははるかに遠くまでさかのぼれるので、大きなファイルでは gzip にはもう見えない繰り返しを見つけます。
文脈で変わる符号
同じ文字でも、直前の2バイトによって違う符号になることがあります。文字の後と、数字や空白の後とでは、続きやすい文字が違うからです。
最初から使える辞書
gzip は、どの単語も最初に出てきたときはリテラルとして書くしかありません。Brotli は代わりに組み込み辞書を参照できます。小さなファイルで最も差が出るのはそのためです。
仕組み
Brotli は gzip と同じ2つの考え方、つまり前のテキストのコピーとハフマン符号を使い、さらに3つを加えます。ウィンドウは 32 KB ではなく最大 16 MB なので、大きなファイルではるか前にある繰り返しも見つけられます。符号は直前のバイトの文脈によって変わります。そして、Web ページやコードによく出てくる約 13,500 語の辞書を内蔵しているため、class や function のような単語は初めて出てきたときでも短い参照で済みます。
向いている場面
Brotli はテキストを gzip より 15-25% 小さくします。差が最も大きいのは、辞書が効く小さなファイルです。現在のブラウザはすべて HTTPS 経由で Brotli を受け付けます。静的ファイルは事前に品質 11 で、動的なレスポンスはその場で品質 4-6 で圧縮しましょう。4-6 なら速度は gzip とほぼ同じです。