I want to ask a question about the bottom communication

I have seen many rust web frameworks, such as actix-web poem, hyper, and tide, but hyper and actix-web obviously supports HTTP2, while tide does not.

At present, new HTTP3 technology has also emerged.

In Java, Spring boot also adopts the HTTP1.1 protocol by default, unless HTTP2 is enabled in the configuration file.

I want to ask why some frameworks do not intend to support HTTP2 protocol or HTTP3 protocol. What is the reason for this?

I'm sorry my English description is not very friendly

If one of the libraries doesn't support HTTP2 or HTTP3, then I would assume that it's due to lack of manpower.

4 Likes

It’s a question of demand and resource allocation. The framework developers need to ask themselves questions like:

  • How prevalent are clients that support HTTP 2 or 3, but not 1.1?
  • What concrete benefits are there to using a higher standard, and how many clients will reap these benefits?
  • How much development and ongoing maintenance effort will it take to support the additional protocols?
3 Likes

My understanding (as a definitely-not-webdev) is that web applications built on this type of framework are often deployed behind a reverse-proxy like nginx, which is running very close to the actual application server. In this case, the reverse proxy can expose HTTP2/3 to the client, while communicating with the application over HTTP1.1. The performance and security benefits of HTTP2/3 are mostly relevant to that frontend connection which is generally has worse network conditions and passes through the public internet. The performance and security benefits are not super relevant to the backend connection, since it has very good networking conditions and is already secure.

This isn't universally true, and there are definitely situations where HTTP2/3 support would be helpful, but it does explain why it's often not a high priority for frameworks.

1 Like