Repository navigation
feat(garage): /garage/dictionary, the dictionary the runtime dropped - #927
Conversation
15 of the 66 registered pages answer returning Chromium visitors with plain brotli instead of a dcz delta, because the Worker renders them per request and workerd's node:zlib zstd dropped its dictionary option. The page measures what cloudflare/workerd#7106 would be worth once it ships: 97,711 to 76,557 bytes (21.6%) at zstd level 6, a near constant 1,178 to 1,694 bytes per page because the delta removes the shared shell, for a median 0.207 ms of CPU under Node. It also says what the fix cannot reach (fetch() fragments), and runs a live demo that fetches the page a second time to show the dictionary's effect. tools/runtime-dcz-probe.ts produces every number on the page and writes nothing. The garage README now lists gen:shell, which the checklist skipped and the build requires.
…he baked-shell route /whoareyou and /garage/dyno moved to a shell baked at build time while this page was being written, so production's 15 brotli pages become 13 once that release finishes ramping. Totals, the chart and the card now describe the 13 (81,228 to 63,449 bytes, 21.9% at level 6), and a new section sets the baked-shell route against the runtime fix.
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
aadhar-sh | 5bafde2 | Sep 25 2026, 06:36 PM |
Wire-size diff vs merge base
Brotli q11, the quality the edge serves. Every number here is deterministic: Client assetsTotal Brotli: 91.57 KiB → 91.60 KiB (+0.03 KiB, +0.0%) across 27 files, 2 changed.
PagesTotal Brotli: 600.01 KiB → 608.75 KiB (+8.75 KiB, +1.5%) across 60 files, 54 changed.
Plus 52 files under the 0.13 KiB floor, net +0.06 KiB — usually content-hash churn in Worker bundle257.40 KiB → 257.53 KiB gzip (+0.13 KiB, +0.1%) Largest module deltas (raw bytes in bundle):
Dictionary transportFamily dictionary acquisition: no change, 14.41 KiB q11.
|
Adds
/garage/dictionary, a write-up of what cloudflare/workerd#7106 is worth to this site once it ships.Most pages here reach a returning Chromium visitor as a dcz delta the build computed. The pages the Worker renders per request ship as plain brotli, because workerd's
node:zlibzstd accepted adictionaryoption and dropped it. Measured against production on 2026-09-25, 51 of 66 registered pages answereddczand 15 answeredbr. Two of the 15 (/whoareyou,/garage/dyno) move to a baked shell with #924 and #926, so the page describes the 13 that remain.What the page claims
/readingloses 9%.fetch()fragments: the family dictionary is offered formatch-dest=("document")only.The page runs a live demo that fetches itself a second time. A
fetch()has destinationempty, so the gap between itsencodedBodySizeand the navigation's is the dictionary's effect on that visitor, measured in their own browser.What else changed
tools/runtime-dcz-probe.tsproduces every number on the page. It reads production, writes nothing, and runs under node (node tools/runtime-dcz-probe.ts), because the timing isnode:zlib's ownzstdCompressSync.pipelines/garage/README.mdnow listsbun run gen:shell. The checklist skipped it, and the build refuses a new page without it.docs/COMPRESSION-STUDY.mdgains a short section on Worker-rendered documents, next to its fragment measurements.nav-run.js(a hashed asset, so this remints/a/nav-run.*), the desktop partial in 42 pages (the garage pin count goes 25 to 26), and theshell/desktopderivation lock.Checked
bun run build,lint,typecheck,pages:check, andtest(917 pass) all pass on the branch rebased onto7eab1534. I viewed the page underbun run devat desktop and 375px widths, with no console errors and no horizontal overflow. The demo takes its no-dictionary branch locally, as expected, since dev serves no deltas.Owed after deploy
The OG card.
gen-og-cards.tscaptures production, so it can't be made before the page exists there.