Faster Page Loads with HTTP/3

August 7, 2024

ServerPilot now supports HTTP/3, the latest version of the HTTP protocol. HTTP/3 speeds up data transfer to make pages load faster. The speedup from HTTP/3 is especially noticeable for browsers on unreliable networks with high packet loss, like mobile devices.

HTTP/2 vs. HTTP/1.1

The standardization of HTTP/2 in 2015 solved the most significant performance problem of HTTP/1.1 by allowing multiplexing of requests over a single network connection.

Before HTTP/2, each network connection could only be used to perform one HTTP request at a time. After making a request, the client had to wait for the response from the server before the next request could be made. Browsers tried to work around the problem by creating multiple network connections to each domain, but for practical reasons the number of connections was limited to six.

TCP Problems in HTTP/1.1 and HTTP/2

Though HTTP/2 significantly improved performance over HTTP/1.1, there was a fundamental limitation that HTTP/2 could not address because the problem was at a lower level than HTTP.

HTTP/1.1 and HTTP/2 both use TCP for the network connection protocol. TCP provides reliable delivery of packets and greatly simplifies network programming. For example, TCP transparently handles complicated cases such as retransmitting lost packets and dealing with packets received out of order. However, on networks with very high packet loss, TCP can be excessively slow due to TCP's requirement that packets must be processed in order.

HTTP/3 on QUIC, QUIC on UDP

HTTP/3 avoids the slowness of TCP on unreliable networks by not using TCP. Instead, HTTP/3 uses a new network protocol called QUIC.

QUIC is built on top of UDP which is a very simple transport protocol. UDP provides no delivery guarantees and provides no concept of a connection between the client and the server. So, HTTP/3 doesn't use UDP directly but instead uses QUIC which is built on UDP.

Enabling HTTP/3 in ServerPilot

As Nginx still considers their HTTP/3 support to be experimental, HTTP/3 is not enabled by default for your servers.

You can enable HTTP/3 for a server through the server's "Settings" page in ServerPilot. If you have firewall rules configured at your server provider, be sure to allow inbound traffic on port 443 UDP.

Learn more about enabling and testing HTTP/3.