Contact emailsh...@chromium.org, pmee...@chromium.org, yoavwe...@chromium.org, kenjibah...@chromium.org
Explainerhttps://github.com/WICG/compression-dictionary-transport Specificationhttps://github.com/WICG/compression-dictionary-transport Design docs https://docs.google.com/document/d/1IcRHLv-e9boECgPA5J4t8NDv9FPHDGgn0C12kfBgANg/edit https://github.com/WICG/compression-dictionary-transport https://datatracker.ietf.org/doc/draft-meenan-httpbis-compression-dictionary Summary This feature adds support for using designated previous responses, as an external dictionary for Brotli-compressing HTTP responses. 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 statusPending 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')`. 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 usable only on secure-context. So this feature will not increase the risk of non-supporting network proxies misunderstanding the content’s encoding. *Gecko*: Positive (https://github.com/mozilla/standards-positions/issues/771 ) *WebKit*: No signal ( https://github.com/WebKit/standards-positions/issues/160) *Web developers*: No signals *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. 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 Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications? Goals for experimentation We would like to collect feedback on the Compression Dictionary Transport feature of API design. We would also like to run 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) using DevTools' Network tab. 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://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 Estimated milestones OriginTrial desktop last 122 OriginTrial desktop first 117 OriginTrial Android last 122 OriginTrial Android first 117 Link to entry on the Chrome Platform Status https://chromestatus.com/feature/5124977788977152 Links to previous Intent discussionsIntent to prototype: https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADk0S-Vb1ON2XT2%2BBP27tJ4ivjgyu63jcd667am4TwcVFGsbuw%40mail.gmail.com 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-WyukWVPpFMFYSWVZ1%2BOuXVjtNfWiCqKvDYcdRwaApZLA%40mail.gmail.com.