HTTP 1.1 was released in 1997 and is still widely used today. It improved on HTTP 1.0 by allowing for persistent connections, which enabled multiple requests and responses between clients and servers in the same connection.
Established, reliable, and supported by virtually all clients and servers.
Allows multiple requests and responses in the same connection.
It’s a text based protocol, leading to inefficient use of bandwidth.
It allows for only one outstanding request per TCP connection (Head of line blocking).
HTTP/2 was released in 2015. The main goal of HTTP/2 is to reduce the latency of web page loading, as well as the number of bytes that are transferred.
Binary, not textual, leading to more efficient use of network resources.
Multiplexing allows for multiple request and response messages concurrently on the same connection, eliminating head-of-line blocking.
Server Push feature allows the server to send resources to the client proactively.
Header Compression reduces overhead.
It can be more complex to implement and debug due to its binary nature.
Server Push, if not implemented correctly, can lead to waste of bandwidth.
HTTP/3, released in 2020, continues the goal of previous HTTP versions to increase the speed and performance of the web.
Instead of TCP, HTTP/3 uses QUIC (Quick UDP Internet Connections) which reduces latency and improves congestion control.
It can survive IP address changes because QUIC is connection-oriented, thus making it beneficial for mobile devices.
Multiplexing without head-of-line blocking, similar to HTTP/2.
Still in early adoption phase, and not all clients and servers support it yet.
QUIC requires more processing power, which might not be ideal for devices with low processing power.
It can struggle with reliable data delivery in environments with packet loss due to its usage of UDP.
WHICH TO USE:
As of 2021, HTTP/2 is a good choice for many websites, as it provides significant performance improvements over HTTP 1.1 and has wide support across modern web browsers and servers.
HTTP/3 is starting to be adopted more widely, but it still has limited support compared to HTTP/2. If you want to be on the cutting edge and you’re willing to deal with potential compatibility and performance issues, you could start using HTTP/3.
However, it’s also worth noting that adopting either HTTP/2 or HTTP/3 doesn’t mean that you have to stop supporting HTTP 1.1. For maximum compatibility, many websites will support all three versions and use the best version that the client supports.