- From: Patrick Meenan <patmeenan@gmail.com>
- Date: Tue, 21 May 2024 19:43:20 -0400
- To: "Roy T. Fielding" <fielding@gbiv.com>
- Cc: HTTP Working Group <ietf-http-wg@w3.org>
- Message-ID: <CAJV+MGwZ0y7gGifAbC2zpn=3rXA0OQpeh3mpKaR6PGQ=7NirVw@mail.gmail.com>
Thanks. I'll get that rolled into the next draft. That matches what Chrome does in the current trial and makes it clear that the dictionary encodings are only available when there's a dictionary to use. On Tue, May 21, 2024 at 6:38 PM Roy T. Fielding <fielding@gbiv.com> wrote: > > On May 20, 2024, at 7:49 AM, Patrick Meenan <patmeenan@gmail.com> wrote: > > > > FYI, draft 04 of the compression dictionaries spec was just released: > https://datatracker.ietf.org/doc/draft-ietf-httpbis-compression-dictionary/ > > > > The changes since draft 03 are: > > > > - Added link relation ("compression-dictionary") > > - Moved the dictionary hash into the response payload and removed the > "Compression-Dictionary" response header > > - Changed content-encodings to "dcb" and "dcz" > > - Specified the compression window settings for Zstandard and Brotli > > > > We're converging on a final spec and the Chrome origin trials to-date > have been extremely positive. > > > > There is one remaining discussion topic that I'm aware of which is > around the compression algorithms that we spec and if we should collapse to > a single algorithm and manage fragmentation at the spec level: > https://github.com/httpwg/http-extensions/issues/2756 > > > > If you're aware of any other issues or have concerns with something else > in the spec, please let us know. Otherwise we're hoping to come to an > agreement on the compression algorithms and then move towards last call and > RFC. > > > A server can send Use-As-Dictionary when applicable to any response, > regardless of Accept-Encoding or user agent. This allows the original > 200 response to be delivered without unnecessary Vary, and by edge > caches that might have no knowledge of dictionaries. That's great. > > However, I would like to change the protocol in 6.1 (Accept-Encoding) > to require the following: > > o When (and only when) a client has a stored dictionary that > matches a request, it can send Available-Dictionary and > Accept-Encoding with its dictionary-compression encodings. > > o When a client does not have a stored dictionary that matches > the request, or chooses not to use one for the request, > the client MUST NOT send its dictionary-compression > algorithms in Accept-Encoding. > > IOW, I would require that clients not advertise their implemented > dictionary-compression encodings in Accept-Encoding for requests > that do not desire a dictionary-compression response, since such > unnecessary variance in HTTP can have a critical impact on caching. > This is consistent with the semantics of Accept-Encoding. > > This change would allow dictionary-based compression to be deployed > for existing resources and existing CDNs without causing a > factorial expansion of Vary. IOW, it allows dictionary-compression > to be deployed without impacting the cacheability of resources > for non-dictionary-using clients. > > The one negative is that it lessens the ability to detect when > dictionary-compression is usable before a dictionary is provided. > I am pretty sure we don't need that. > > A 200 response that has been dictionary-compressed would, of course, > still be marked with "Vary: Accept-Encoding, Available-Dictionary" > and the chosen encoding given in "Content-Encoding". This would > not be affected by the above change. > > The possibility of multiple cached responses for a given response, > each with its own Vary from its original request, is already defined > by HTTP caching. I doubt that everyone implements it correctly, > but that's not unusual. There's no other correct choice given how > origin servers select negotiable content. > > Cheers, > > ....Roy T. Fielding, Senior Principal Scientist, Adobe > >
Received on Tuesday, 21 May 2024 23:43:37 UTC