Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Keep track of whether Destination supports HTTP/3 based on first server response #11407

Open
cowwoc opened this issue Feb 14, 2024 · 1 comment

Comments

@cowwoc
Copy link
Contributor

cowwoc commented Feb 14, 2024

Jetty version(s)
12.x

Enhancement Description
Following up on the discussion at #11368 (comment) I would like to explore the idea of HttpClient issuing the first connection to a host using the HTTP/2, HTTP/1.1 preference order and if the server response indicates that the host supports HTTP/3 then subsequent requests to that host would use that protocol. Per the discussion, the server indicates HTTP/3 support using the Alt-Svc header or the ALTSVC frame.

@sbordet can you please clarify this point?

As I said, that implies an order relationship based on the protocol (HTTP/3.compareTo(HTTP/2) > 0) that may be true for browsers, but not for HttpClient.

Why is it that HTTP/3 is helpful for browsers but not necessarily HttpClient?

@sbordet
Copy link
Contributor

sbordet commented Feb 14, 2024

Why is it that HTTP/3 is helpful for browsers but not necessarily HttpClient?

Because about half the web traffic is from mobile, but HttpClient is rarely used on mobile (although it can be).

Because the QUIC implementation we use (Quiche) is a native library that we need to call multiple times to process a request, so the performance is much worse than the other protocols.

Also, UDP may not be enabled in certain environments, so it is not desirable to even try HTTP/3.

The list continues.

Even for browsers may not be entirely true that HTTP/3 is faster/better than previous versions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants