Compression Dictionary Transport draft 01

There's an updated version of the compression dictionary transport ID:
https://datatracker.ietf.org/doc/draft-ietf-httpbis-compression-dictionary/

Changes since draft-00:

*Changed match to use URLPattern*
PRs 2646 <https://github.com/httpwg/http-extensions/pull/2646> and 2689
<https://github.com/httpwg/http-extensions/pull/2689>.
This changed the URL pattern matching for applying dictionaries from the
custom logic to use URLPattern instead. Originally the intention was to
exclude the protocol/host/port/server bits and only allow for the path and
query string components but the teams working on URLPattern would prefer
that the integration use the existing full-URL string integration.

*Added support for a server-provided dictionary id*
PR 2687 <https://github.com/httpwg/http-extensions/pull/2687>
Instead of echoing the dictionary URL and ETag we agreed that an
server-provided string "id" would provide more flexibility for servers to
provide their own cache index and not require re-indexing dictionaries
based on the sha-256 hash. The string id can be up to 1024 bytes and will
be echoed back by the client in a `Dictionary-ID` request header if one was
provided.

*Updated the default dictionary ttl to 14 days since last fetched*
PR 2676 <https://github.com/httpwg/http-extensions/pull/2676>
This changes the default ttl from 1 year to 14 days since last fetch (up a
bit from the 7-day default mentioned at IETF 118). There's an open question
about the dictionaries needing a separate TTL (see below) so this may go
away.

*Removed support for hash negotiation and force use of sha-256*
PR 2675 <https://github.com/httpwg/http-extensions/pull/2675>
Eliminated the complexity of supporting alternate hash algorithms. If we
reach the point where sha256 is no longer appropriate then we can add
support then.

*Added the dictionary hash to the compressed response*
PR 2680 <https://github.com/httpwg/http-extensions/pull/2680>
When a compression dictionary was used, this adds the hash of the
dictionary that was used to a "Content-Dictionary" response header instead
of implicitly using the hash of the dictionary from the
"Available-Dictionary" request header.

*Dictionary hashes changed to sf-binary*
PR 2680 <https://github.com/httpwg/http-extensions/pull/2680>
Instead of using a lowercase hex encoding of the dictionary hash, the
"Available-Dictionary" request header and "Content-Dictionary" response
header now use sf-binary encoding.


Open Questions/Issues:

Issue 2649 <https://github.com/httpwg/http-extensions/issues/2649> - Should
the dictionaries have a ttl separate from the cache lifetime? Originally it
was added so that the dictionaries can have a short ttl for long-cached
resources that are updated frequently to minimize variants polluting the
cache. This is some question if that is necessary or if caches need to
handle eviction of variants anyway and adding another ttl may not be needed.

Issue 2638 <https://github.com/httpwg/http-extensions/issues/2638> - Should
the match pattern prevent the origin from being specified? It doesn't break
anything if a server specifies a full path including origin but it is a
waste of bytes if they do since all match patterns MUST be same-origin to
the dictionaries.


Thank you for all of the constructive feedback so far. I think it is
shaping up well. We should have some initial feedback from the Chrome
origin trial that is currently in-flight.

-Pat

Received on Monday, 11 December 2023 18:08:20 UTC