92.1 KB が 2.6 KB に!Cloudflare の共有辞書パススルーが open beta だよ!
やっほー、しぃちゃんだよ!今日は「え、そんなに小さくなるの!?」ってびっくりする圧縮の話だよ。
Cloudflare Changelogなにが発表されたの?
Cloudflare の Changelog から、共有辞書(RFC 9842)の「パススルー(passthrough)」モードが全プランで open beta になったよ!
共有辞書っていうのは、ブラウザがすでにキャッシュしている「前のバージョンのファイル」を辞書にして、オリジンが新しいレスポンスを圧縮する仕組みなの。つまり、バージョン間の差分だけがネットワークを流れるってこと。
今までどうだったの?
これまでの圧縮は Gzip や Brotli みたいに「そのファイル単体」を縮める方式が中心だったの。でも共有辞書を使うと、前バージョンとの差分だけを送れるから、ちょっとした更新なら送るデータが劇的に減るんだよ。
そのやり取りを Cloudflare がちゃんと素通し(パススルー)してくれるのが、今回のアップデートなの。
これで何が変わるの?
数字がすごいの。Cloudflare の社内テストでは、272 KB の JavaScript バンドルが、
the asset shrinks from 92.1 KB with Gzip to 2.6 KB with delta Zstandard against the previous version — a 97% reduction over standard compression
つまり Gzip で 92.1 KB だったものが、前バージョンとの差分 Zstandard だとたった 2.6 KB に。標準の圧縮より 97 % も小さくなったんだって!ダウンロード時間も Gzip 比で 81〜89 % 改善したそうだよ。
深く潜ってみよう
パススルーモードで Cloudflare がやってくれるのは、この 3 つなの。
Use-As-DictionaryとAvailable-Dictionaryヘッダーを、クライアントとオリジンの間で改変せずに転送するdcb(Dictionary-Compressed Brotli)とdcz(Dictionary-Compressed Zstandard)を、有効なContent-Encodingとして端から端まで扱い、再圧縮しない- キャッシュキーを
Available-DictionaryとAccept-Encodingで振り分けて、差分圧縮された各バリアントを正しくキャッシュする
辞書のライフサイクル(どのファイルを辞書にするか、Use-As-Dictionary を付けるか、差分を作るか)はオリジン側の担当。Cloudflare は転送とキャッシュを受け持つ、っていう役割分担だよ。
対応ブラウザは Accept-Encoding に dcb か dcz を出すもので、今のところ Chrome 130 以降と Edge 130 以降なの。
有効化はゾーンに対して API を 1 回叩くだけ。
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/settings/shared_dictionary_mode" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"value": "passthrough"
}'
Cloudflare ダッシュボードの Speed > Settings > Content Optimization からもオンにできるよ。動きを見たいときは canicompress.com のデモも用意されてるの。
まとめ
- Cloudflare の共有辞書パススルーが全プランで open beta になったよ
- 前バージョンとの差分だけを送るから、社内テストでは 92.1 KB → 2.6 KB(97 % 削減)
- Cloudflare はヘッダー転送・
dcb/dczの素通し・キャッシュ振り分けを担当、辞書管理はオリジン側 - 対応は今のところ Chrome 130 以降と Edge 130 以降、有効化は API 1 回でオン
頻繁に更新される JS バンドルや大きめの静的アセットを配信してる人には、送信量とダウンロード時間の両方で効いてくる話だよ。試すハードルも低いから、気になったらオンにしてみてね!