Being in the industry for quite long, I can definitely say most of the application developers do not care about the underlying application protocol. We have a lot of things to learn and improve on than to focus on things like HTTP versions. We are more focused on the features of different languages and versions of frameworks we use for the development of the application. As a result, when it comes to optimizations we end up looking for faster methods, implementing threads and other complex solutions rather than using techniques lying right in front of our eyes.
There must be something useful, that the HTTP-WG (HTTP working group) released version HTTP/2 upgrading from HTTP/1.1.
What if I tell you just by updating your HTTP version, you can improve your application page load time by about 55%. Yupp! you got it right 2x faster…Read on Chromium blog
History & Design of HTTP/2
Like all other good things, the revolution started at Google! The goal for engineers at Google was to efficiently use the TCP connection used by the HTTP. Long story short they came up with SPDY (pronounced “SPeeDY”) which was an advancement in the way TCP connections are created and used in HTTP/1.1.
They came up with features like Binary Framing layer, Multiplexing, Stream Prioritization and other sugary things that made SPDY perform 55% better at page load time. This was a huge breakthrough but all they did was test under laboratory conditions, and we all know things vary a lot in real-world situations. Thus, they decided to have clients written to work on SPDY and decided to convert a few of their applications to use SPDY. All this was around 2012-2013. Google released a version of the Chrome browser with SPDY implementation and made its progress on SPDY, open-source. Soon, other giants like Facebook and Twitter came into the picture and started using SPDY. As a result, it gave birth to an impression that Chrome works faster than any other browser (well, the under the hood SPDY gets the credit for it).
It is important to understand that, the HTTP/2 is an advancement and not a replacement for the previous HTTP standards. The core concepts of the HTTP still remain the same, like HTTP methods, status codes, header fields, and URIs. In summary, the high-level API remains the same but the low-level changes address the performance limitations of the older version of HTTP i.e. HTTP/1.1.
Now, what were the changes exactly and how did they help? To answer these questions please follow the link for individual topics included to understand the key concepts in detail –
- Binary framing layer
- Stream messages
- Stream prioritization
- Flow Control
- Server Push
- Header Compression