- From: Lucas Pardue <lucas@lucaspardue.com>
- Date: Tue, 30 Jun 2026 16:40:18 +0100
- To: "HTTP Working Group" <ietf-http-wg@w3.org>
- Message-Id: <34c55cce-51ca-42d8-a756-8624fab42ff1@app.fastmail.com>
Hi Jesse. I can't speak to whether I have any interest in this. I'll let others speak up on that front. However, see some responses to technical aspects in line: On Mon, Jun 29, 2026, at 23:50, Jesse Wright wrote: > Hi all, > > I would like to make it possible for HTTP QUERY to have cache hits on servers and CDN's without always needing to send the full request body - so as to minimize network traffic on queries with large request bodies. > > This could be achieved as follows. The client sends a Content-Digest (RFC 9530) of the request content with Expect: 100-continue (RFC 9110) and withholds the body. On a miss the cache the usual 100 (Continue) would be sent. On a cache hit, the server answers immediately and never sends 100 (Continue), so the body is never uploaded: > > QUERY /search HTTP/2 > Content-Type: application/sql > Content-Digest: sha-256=:X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=: > Expect: 100-continue > > (client withholds the request content) > > HTTP/2 200 OK > Content-Type: application/json > Cache-Status: ExampleCache; hit; detail=request-content-digest > > (result served from cache; the query body was never sent) I am not a caching expert, so I expect I might make some mistakes in the following text. First, to my knowledge, there is no standardized definition of using RFC 9530 digests for such a purpose. We might imagine how a server could use the Vary response header to communicate that the cache key uses Content-Digest. However, I think this might be fragile due to the nature of Content-Digest (along with vary's reuirements on request field value matching). Second, I don't think Content-Digest would be 100% suitable because its related to the specific "bytes-on-the-wire" for the request. Two QUERY requests that are logically the same but differ by a content-coding (imagine one client can use defalte, another zstd) would evaluate to different digest values. An alternative would be https://httpwg.org/http-extensions/draft-ietf-httpbis-unencoded-digest.html Third, the digest fields (content-digest, repr-digest, unencoded-digest) are all Structured Fields dictionaries. There are likely challenges on matching the digest algorithm choices made across clients and servers. For example, if a cache key is matching on Unencoded-Digest: sha-256=X, sha-512=Y", would it be desirable that a client can send only one value such as "Unencoded-Digest: sha-256=X" and expect to get a hit? Cheers Lucas > > I would like to gauge from the group whether there is interest in solving this problem. If yes: > 1. Is Expect: 100-continue the right primitive, or would a dedicated request precondition be cleaner? > 2. Where should it live? Three options, and I'd welcome direction: > 1. revise RFC 10008 to fold it in; > 2. a short companion document that formally Updates RFC 10008; > 3. an independent extension. > > A rough sketch (kramdown-rfc source) is here: > https://gist.github.com/jeswr/7425f74439733762eb347f0a0c199339 > > This idea was originally raised in the following issue: https://github.com/httpwg/http-extensions/issues/3469 > > Kind Regards, > Jesse Wright > DPhil Computer Science > Jesus College > > > mailto:jesse.wright@cs.ox.ac.uk > https://www.cs.ox.ac.uk/people/jesse.wright/ > https://www.linkedin.com/in/jesse-wright-49823a132/ > Book a meeting: https://cal.com/jesse-wright-zdbdal/public > Mobile: +44 7862 381 515 > WhatsApp: +61 468 669 019 > > *My work day may look different than yours. Please do not feel obligated to respond outside of your normal working hours.*
Received on Tuesday, 30 June 2026 15:41:26 UTC