specify / specify7

Specify 7
https://www.specifysoftware.org/products/specify-7/
GNU General Public License v2.0
66 stars 36 forks source link

Add HTTP2 (and HTTP3) support in NGINX containers #2608

Open maxpatiiuk opened 1 year ago

maxpatiiuk commented 1 year ago

These will bring performance improvements and future-proofing

Enabling them in dev containers and production containers would be great

CarolineDenis commented 1 year ago

Cannot be used without HTTPS, => https://github.com/specify/specify7/issues/2607 not wise to have different environments between development and production.

maxpatiiuk commented 1 year ago

More context: Http2 can't really be used without HTTPs (https://github.com/specify/specify7/issues/2607) HTTPs wasn't added in development because that would additional configuration step to docker setup (https://github.com/specify/specify7/issues/2607#issuecomment-1474281215) Could enable Http2/Http3 just in production, but it's not advisable to have different configs between production and development (as then issues affecting just production would be uncaught)

maxpatiiuk commented 1 year ago

From @grantfitzsimmons:

https://caniuse.com/http2

HTTP/2 is only supported over TLS (HTTPS).

Browsers impose a per-domain limit of 6-8 connections when using HTTP/1.1, depending on the browser implementation. This allows at most 6-8 concurrent requests per domain.

With HTTP/2, browsers open only 1 connection per domain. However, thanks to the multiplexing feature of the HTTP/2 protocol, the number of concurrent requests per domain is not limited to 6-8, but it is virtually unlimited.

Source: Stack Overflow

This would get around issues involved with the stats page being limited to 6-8 concurrent requests at a given time.

This would require self-hosted institutions and developers to create certificates in development as it requires TLS, but this is not difficult to set up for most users.

@maxpatiiuk @realVinayak – Please add more information, corrections, or comments if necessary :smile:

grantfitzsimmons commented 1 year ago

Quoting Max:

@realVinayak had great insight that this could possibly be caused by HTTP 1.1, as it has a limit of 6 simultaneous requests. We should test if this if fixed when the web server is updated to use http2 or even http3 instead - https://github.com/specify/specify7/issues/2608