Contact emails

h...@chromium.org, pmee...@chromium.org, yoavwe...@chromium.org,
kenjibah...@chromium.org


Explainer

https://github.com/WICG/compression-dictionary-transport

Specification

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

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/

Summary

An Origin Trial for Compression Dictionary Transport was scheduled to start
in Chrome 117 and end in Chrome 122. But due to a critical issue, we could
not start
<https://groups.google.com/a/chromium.org/g/blink-dev/c/NgH-BeYO72E/m/G8fasgKdAQAJ>
the Origin Trial until Chrome 119. The design of the feature has also
evolved during the origin trial and RFC process. We’d like to continue the
Origin Trial to get more feedback on the updated
<https://chromium.googlesource.com/chromium/src/+/40d4e43a01431f680d5e682aaa2c4a543c8f0200/docs/experiments/compression-dictionary-transport.md#changes-in-m123>
feature.

Blink component

Blink>Network
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3ENetwork>

TAG review

https://github.com/w3ctag/design-reviews/issues/877
TAG review status

Closed
RisksInteroperability 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')`. 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. For enterprises that
have deployed HTTPS-intercepting proxies that do not properly handle
unknown encodings there is an enterprise policy exposed to disable the
feature.

Gecko: Positive (https://github.com/mozilla/standards-positions/issues/771)

WebKit: No signal (https://github.com/WebKit/standards-positions/issues/160)

Web developers: Positive

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 or build processes for static resources. Currently there is no
major server software which supports compression dictionaries. Some CDNs
have shared interest in supporting shared dictionary compression (e.g.
publicly mentioned
<https://blog.cloudflare.com/this-is-brotli-from-origin/#:~:text=One%20development%20that%20we%27re%20particularly%20focused%20on%20is%20shared%20dictionaries%20with%20Brotli.>
in a blog post by Cloudflare).


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 information leaks.

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

Does this intent deprecate or change behavior of existing APIs, such that
it has potentially high risk for Android WebView-based applications?

No

Goals for experimentation

We would like to collect feedback on the updated API design of Compression
Dictionary Transport feature. Also, we would like to continue some
experiments using this feature to measure its performance impact.

Ongoing technical constraints

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).


Will this feature be supported on all six Blink platforms (Windows, Mac,
Linux, Chrome OS, 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>
?

No. We will rewrite some browser_tests to WPT.

Flag name on chrome://flags

chrome://flags/#enable-compression-dictionary-transport-backend
chrome://flags/#enable-compression-dictionary-transport

Finch feature name

CompressionDictionaryTransportBackend CompressionDictionaryTransport

Requires code in //chrome?

True

Tracking bug

https://crbug.com/1413922

Launch bug

https://launch.corp.google.com/launch/4266286

Estimated milestones

OriginTrial desktop last

125

OriginTrial desktop first

123

OriginTrial Android last

125

OriginTrial Android first

123


Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/5124977788977152

Links to previous Intent discussions

Intent to prototype:
https://groups.google.com/a/chromium.org/g/blink-dev/c/-qYpLo9DTjw/m/JX6kbUOtBQAJ

Intent to experiment:
https://groups.google.com/a/chromium.org/g/blink-dev/c/NgH-BeYO72E/m/oup5DpbxAAAJ

-- 
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-UykhXHVNis9%2B9BVTmtBd8RJLnDfZYSUYN46J%3DjKDZEfw%40mail.gmail.com.

Reply via email to