- From: Carlos Mateo <carlos23p@gmail.com>
- Date: Fri, 6 Mar 2026 17:29:28 -0600
- To: ietf-http-wg@w3.org
- Message-ID: <CAGczhGvOu7L4HfeksHvnEXJAmsFC5t139Z8tKqfzj1qGnU-mZg@mail.gmail.com>
Hi all, I wanted to share implementation experience relevant to decoupling dictionary and cache lifetimes in Compression Dictionary Transport (RFC 9842). This was discussed during standardization (httpwg/http-extensions#2649) and scoped out. Now that CDT has shipped and the Dictionary TTL extension is available for developer testing in Chromium ( https://groups.google.com/a/chromium.org/g/blink-dev/c/pW8bjRXGNKs), I've built a prototype that measures the impact of using previous responses as dictionaries for dynamic (no-cache) content. Full writeup: https://dev.to/carlosmateom/beyond-static-resources-delta-compression-for-dynamic-html-3hn4 Live demo: https://delta-compression-demo.onrender.com Source code: https://github.com/carlosmateo10/delta-compression-demo The prototype generates realistic dynamic pages (~50KB) with session-dependent CSS class hashing, large inline JSON state, and per-request tokens (CSP nonces, CSRF tokens). Using the previous response from the same session as a dcb dictionary achieves 96-98% compression savings on cross-query navigation-10-27x smaller than standard Brotli, and 7-19x smaller than a static shared dictionary built from different sessions. The static dictionary misses everything session-specific: hashed class names, CSS values, feature-flag-dependent DOM structures, and inline state. For duplicate queries (tab restore, back-button, refresh), the entire page compresses to ~100 bytes, a 468x reduction over standard Brotli. Only the per-request CSRF token, CSP nonce, and timestamp changed. The server-side cost is per-session dictionary storage with TTL-based eviction. For 100K concurrent sessions with a 600-second TTL, this is roughly 10 GB within a single cache instance. Given these initial results, I would love to start a conversation about drafting a spec extension that adds support for the TTL parameter. We are also experimenting with this approach for Google Search, and we will have data from a large-scale deployment to add to the conversation soon. The Dictionary TTL mechanism (Use-As-Dictionary: match="/search*", ttl=600) reuses the existing dcb/dcz encoding, the only addition is a TTL parameter. Feedback welcome on the approach, measurements, or implementation. Best, Carlos Mateo Muñoz
Received on Saturday, 7 March 2026 10:43:01 UTC