Revert: Disable HTTP/2 to resolve significant client loading latency in high-latency scenarios #814
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.

This PR reverts the use of HTTP/2 and re-enables HTTP/1.1 for the BBB server. This change is necessary to resolve a critical performance degradation issue that occurs under non-ideal network conditions, such as high Round-Trip Time (RTT) or poor connectivity.
The Problem: Client loads extremely slow with high RTT
During the 22nd BBB Developer Conference, an investigation was conducted into reports of random high network RTT and excessive client loading times when the server is geographically distant from the client.
Reproduction Steps
Root Cause: Head-of-Line Blocking in HTTP/2 Multiplexing
The core issue stems from how HTTP/2 handles multiple requests over a single TCP connection, a process called multiplexing:
HTTP/2: All requests for client assets (JavaScript, CSS, images, etc.) are streamed over a single TCP connection. If a single request is delayed due to high RTT or packet loss, it effectively causes Head-of-Line Blocking, impacting the entire stream and delaying all subsequent requests.
HTTP/1.1: The browser opens multiple parallel TCP connections to fetch assets. This parallelization allows unaffected requests to complete independently, mitigating the impact of any single problematic request.
Performance Evidence
Our testing confirms that while HTTP/2 offers potential benefits in ideal, low-latency environments (though we noted no significant difference in our tests), its performance degrades severely under real-world, high-latency conditions.
The following table demonstrates the loading time difference under a high-latency test scenario:
Conclusion: To ensure BBB works well for all scenarios, especially for users with poor or distant connections, reverting to HTTP/1.1 is the necessary performance optimization.
I recommend disabling HTTP/2 to prioritize a reliable and consistent user experience across the global user base.
Further Reading
For additional context on the challenges of HTTP/2 in non-ideal networks:
https://www.twilio.com/en-us/blog/developers/http2-issues-htmlhttps://lucid.co/techblog/2019/04/10/why-turning-on-http2-was-a-mistake