Congratulations on getting compression dictionaries through the standards
gauntlet!

On Tue, Aug 27, 2024 at 2:36 AM Tsuyoshi Horo <h...@chromium.org> wrote:

> Contact emailsh...@chromium.org, pmee...@chromium.org,
> nidhij...@chromium.org, yoavwe...@chromium.org, kenjibah...@chromium.org
>
> Explainerhttps://github.com/WICG/compression-dictionary-transport
>

The explainer still has "All actual header values and names still TBD". I
assume that's not the case anymore?


> Specification
> https://datatracker.ietf.org/doc/draft-ietf-httpbis-compression-dictionary
>

Is there a specification for the browser side of this? I'd expect to find
something in Fetch that describes, for example, the CORS, same-origin, and
partitioning behavior.


> Design docs
>
> https://docs.google.com/document/d/1IcRHLv-e9boECgPA5J4t8NDv9FPHDGgn0C12kfBgANg/edit
> https://github.com/WICG/compression-dictionary-transport
> https://datatracker.ietf.org/doc/draft-ietf-httpbis-compression-dictionary
>
> https://docs.google.com/document/d/1WCK965Ew0hTN6k05o2JFi9Y-AdGfkB1io_i6LrTSeQs/edit?usp=sharing
>
> Summary
>
> This feature adds support for using designated previous responses, as an
> external dictionary for Brotli- or Zstandard-compressing HTTP responses.
> Enterprises might experience potential compatibility issues with enterprise
> network infrastructure. The CompressionDictionaryTransportEnabled policy is
> available to turn off the compression dictionary transport feature.
>
>
> Blink componentBlink>Network
> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3ENetwork>
>
> TAG reviewhttps://github.com/w3ctag/design-reviews/issues/877
>
> TAG review statusIssues addressed
>
> Chromium Trial NameCompressionDictionaryTransportV3
> Origin Trial documentation link
> https://chromium.googlesource.com/chromium/src/+/main/docs/experiments/compression-dictionary-transport.md
> WebFeature UseCounter nameSharedDictionaryUsed
>
> Chromium Trial NameCompressionDictionaryTransport
>
> Link to origin trial feedback summary
> https://github.com/httpwg/http-extensions/issues?q=is%3Aissue+label%3Acompression-dictionary
>
> Risks
>
>
> Interoperability and Compatibility
>
> Interoperability and Compatibility risk are low. This feature introduces a
> new compression method for transporting resources over HTTP. Web sites can
> know the browser support for the new feature by checking
> `document.createElement('link').relList.supports('dictionary')`.
>

https://www.ietf.org/archive/id/draft-ietf-httpbis-compression-dictionary-17.html#name-the-compression-dictionary-
says the link relation is "compression-dictionary" instead of "dictionary".
Which is being shipped?


> Also web servers can know the browser support by checking the
> `Accept-Encoding` request header and the new `Use-As-Dictionary` request
> header. This feature is an opt-in feature. And the dictionary storage is
> isolated using the top level site and the frame origin as the key. That
> means, if there is no dictionary registered for the site, the behavior of
> Chrome will not change while browsing the site. Also this feature is only
> usable within a secure-context. So this feature will not increase the risk
> of having network proxies meddle with the content’s encoding.
>
>
> *Gecko*: Positive (
> https://github.com/mozilla/standards-positions/issues/771)
>
> *WebKit*: Support (
> https://github.com/WebKit/standards-positions/issues/160)
>
> *Web developers*: Positive based on origin trial feedback
>
> *Other signals*:
>
> Ergonomics
>
> To reduce memory usage in network services, dictionary metadata is stored
> in a database on disk. And to avoid performance degradation for normal
> requests that do not use a dictionary, the reading of this metadata is
> designed not to block network requests. In other words, if the reading of
> metadata from the database is not completed before the request header is
> ready to be sent to the server, the dictionary may not be used even if it
> is already registered in the database.
>
>
> Activation
>
> To adopt this feature, web developers need to make changes in their web
> servers. Currently there is no major server softwares which supports
> compression dictionaries. Some CDNs have shared interest in supporting
> shared dictionary compression (e.g. publicly mentioned [*] in a blog post
> by Cloudflare). [*]
> https://blog.cloudflare.com/this-is-brotli-from-origin/#:~:text=One%20development%20that%20we%27re%20particularly%20focused%20on%20is%20shared%20dictionaries%20with%20Brotli
> .
>
>
> Security
>
> Chrome registers the response as a dictionary only when the response is
> CORS-readable from the document origin. Also we use a registered dictionary
> to decompress the response only when the response is CORS-readable from the
> document origin. Additionally, the dictionary and the compressed resource
> are required to be from the same origin as each other. So this should not
> introduce any new attack vector of stealing information. The dictionaries
> are partitioned with the storage cache and are cleared whenever cookies or
> cache is cleared to ensure that the dictionaries can not be abused as a
> tracking vector.
>
>
> WebView application risks
>
> None
>
>
> Debuggability
>
> We have introduced chrome://net-internals/#sharedDictionary. Using it, web
> developers can manage the registered dictionaries. Also web developers can
> check the related HTTP request and response headers (Use-As-Dictionary,
> Sec-Available-Dictionary, Accept-Encoding, Content-Encoding) using
> DevTools' Network panel.
>
>
> Will this feature be supported on all six Blink platforms (Windows, Mac,
> Linux, ChromeOS, Android, and Android WebView)?Yes
>
> Is this feature fully tested by web-platform-tests
> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
> ?Yes
>
> https://wpt.fyi/results/fetch/compression-dictionary
>
>
> Flag name on 
> chrome://flagschrome://flags/#enable-compression-dictionary-transport-backend
> chrome://flags/#enable-compression-dictionary-transport
>
> Finch feature nameCompressionDictionaryTransportBackend
> CompressionDictionaryTransport
>
> Requires code in //chrome?True
>
> Tracking bughttps://crbug.com/1413922
>
> Launch bughttps://launch.corp.google.com/launch/4266286
>
> Sample links
> https://compression-dictionary-transport-threejs-demo.glitch.me
> https://compression-dictionary-transport-shop-demo.glitch.me
>
> Estimated milestones
> Shipping on desktop 130
> Origin trial desktop first 123
> Origin trial desktop last 125
> Origin trial desktop first 117
> Origin trial desktop last 122
> Origin trial desktop first 127
> Origin trial desktop last 129
> Shipping on Android 130
> Origin trial Android first 123
> Origin trial Android last 125
> Origin trial Android first 117
> Origin trial Android last 122
> Origin trial Android first 127
> Origin trial Android last 129
> Shipping on WebView 130
> Origin trial WebView first 123
> Origin trial WebView last 125
> Origin trial WebView first 127
> Origin trial WebView last 129
>
> Anticipated spec changes
>
> None. The draft has been reviewed by the IETF http working group and
> steering committee and approved for publication as a RFC. There are a few
> mechanical process issues that need to happen for publication but the spec
> itself will not be changing.
>
> Link to entry on the Chrome Platform Status
> https://chromestatus.com/feature/5124977788977152?gate=5186705503551488
>
> Links to previous Intent discussionsIntent to Prototype:
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADk0S-Vb1ON2XT2%2BBP27tJ4ivjgyu63jcd667am4TwcVFGsbuw%40mail.gmail.com
> Intent to Experiment:
> https://groups.google.com/a/chromium.org/g/blink-dev/c/7YdP2YxRQn4/m/9oPxLDdjAAAJ
> Intent to Experiment:
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADk0S-WyukWVPpFMFYSWVZ1%2BOuXVjtNfWiCqKvDYcdRwaApZLA%40mail.gmail.com
> Intent to Experiment:
> https://groups.google.com/a/chromium.org/g/blink-dev/c/9iMl0kAA2LE
>
>
> This intent message was generated by Chrome Platform Status
> <https://chromestatus.com/>.
>
> --
> You received this message because you are subscribed to the Google Groups
> "blink-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to blink-dev+unsubscr...@chromium.org.
> To view this discussion on the web visit
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADk0S-X5SPHneF3WuaDYQREdDs_vAyE3JxeRA6s5RMXXL6rVBw%40mail.gmail.com
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADk0S-X5SPHneF3WuaDYQREdDs_vAyE3JxeRA6s5RMXXL6rVBw%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CANh-dXkksqJzhvnHV6DdpU3GUwqbXQ%2BQ639PTJ5BhxNJ2x__oA%40mail.gmail.com.

Reply via email to