Chromeで共有辞書を使用した圧縮のテストが開始される、リピーターが多いウェブサイトで極めて効果的

ウェブサーバーとブラウザ間の通信においてはさまざまなデータが圧縮されています。より圧縮率の高いアルゴリズムの開発と普及が進む中、Chromeで共有辞書を使用した圧縮のテストを開始するとGoogleが発表しました。
Supercharge compression efficiency with shared dictionaries | Blog | Chrome for Developers
https://developer.chrome.com/blog/shared-dictionary-compression

ウェブサイト閲覧時にはリソースの読み込み時間を削減するため、ウェブサーバーでHTMLやCSS、JavaScriptなどの一般的なテキスト形式のファイルを送信する前に圧縮を行い、クライアントで解凍することが一般的です。
長い間圧縮にはgzipというアルゴリズムが使用されていましたが、2016年にはより優れた圧縮率を実現するBrotliというアルゴリズムがChromeに導入されたほか、2024年3月19日リリース予定のChrome 123ではZStandardという新たなアルゴリズムが導入される予定となるなど、改良が積み重ねられています。
Chromeの開発チームはこうした圧縮アルゴリズムの改良に加えて、共有辞書を使用してさらに圧縮率を高める手法を開発中とのことで、Chromeにて実際に動作を確かめるテストが行われていることを明らかにしました。
共有辞書を使用しない圧縮手法の場合、下図の2回目の「function」の部分のように「前に同じデータが出現していた場合にその部分を示すデータに置き換える」ことでデータ量を削減しています。

共有辞書を使用する場合、頻出のパーツをあらかじめ辞書として用意しておくことで、データの先頭部分から圧縮を行う事が可能です。

Brotliなどのアルゴリズムにはもともと内部に辞書が用意されているものの、ウェブサイトで使用されているフレームワークの種類などに合わせてカスタムした共有辞書を使用することでより圧縮率が高まります。下図の通り、Gzipと比較して最大で96%の圧縮率を達成することもあるとのこと。

Googleの検索結果ページではHTMLのサイズが平均43%まで低下したほか、Amazonでは平均30%になるなどさまざまなサイトで大きくデータ量を削減できるとされています。

Chromeはリクエストにおける「Accept-Encoding」ヘッダで「br-d」「zstd-d」と表示することで共有辞書のサポートを表すとのこと。どの共有辞書が利用できるのかについては「Available-Dictionary」ヘッダにハッシュを記載してサーバーへ通知します。

ウェブサイト側は辞書を直接用意するほか、「Use-As-Dictionary」ヘッダにて辞書として利用する静的リソースを指定することが可能です。例えば下図のように設定することで、「styles.v1.css」から「styles.v2.css」に更新した際にほぼ差分のみのデータを送信するだけでOKになるとのこと。

こうした仕組みの性質上、再訪問者の割合や更新頻度が高いサイトにおいて読み込みのパフォーマンス改善に効果的となっています。Chrome側で共有辞書の使用を有効にするには「chrome://flags/#enable-compression-dictionary-transport」にアクセスし、「Compression dictionary transport」フラグを「Enabled」にすればOK。

ウェブサイト側で共有辞書を試す場合にはオリジントライアルに登録するよう案内されています。
・関連記事
人類の知識・Wikipedia1GB分をできるだけ圧縮するヒュッター賞で114MBへの圧縮に成功 - GIGAZINE
大規模言語モデルへの入力プロンプトを意味を保ったまま高度に圧縮する技術「LLMLingua」をMicrosoftが開発 - GIGAZINE
画像生成AI「Stable Diffusion」が実はかなり優秀な画像圧縮を実現できることが判明 - GIGAZINE
MP3圧縮で劣化しまくった音質を再現してくれるプラグイン「MAIM」 - GIGAZINE
老舗圧縮解凍ソフト「WinRAR」でファイルを開くだけで任意コード実行を可能にする脆弱性が発見される、すでに修正版が配布済み - GIGAZINE
・関連コンテンツ
in ソフトウェア, Posted by log1d_ts
You can read the machine translated English article Chrome starts testing compression using ….