[29/09/17, 1:32:45 AM] Amrith Yerramilli: (*) (*) (*) !!!
https://production1.adbox.pro/App/AdServer/Ads/New/1501
Holy f***! what a difference
[29/09/17, 1:32:53 AM] Amrith Yerramilli: HTTP2 !!
[29/09/17, 1:33:01 AM] Amrith Yerramilli: I’m literally screaming
My conversation with Akshay a couple of weeks ago.
Guess what, we are already benefitting from HTTP/2! Azure CDN has been supporting HTTP/2 for a while now.
Here’s a screenie of the dashboard - look for “protocol” in the dev tools.
Plain old HTTP/1.1
The display ad creation UI was sluggish as hell. This was primarily due to the creative gallery. We are loading a gazillion assets from the single domain (which points to Amazon CloudFront).
Why ?
The creative gallery looks like this:
Each thumbnail
is actually an iframe that loads a complete website inside it - this website represents the ad.
The iframe loads the index.html
page, which then makes additional requests for the ad’s assets (scripts, styles, images, etc).
Clearly, we were killing the browser’s request pipeline - we were loading a large number of requests from the same domain.
A possible solution to this could have been Domain Sharding.
But we took the easy way out.
It’s a Bird.. It’s a Plane.. It’s HTTP/2
Amazon CloudFront (our other CDN provider) also supports HTTP/2. And we’ve just enabled it. (Yes it’s not so smart that we hadn’t done that ages ago; but nevertheless)
What is HTTP/2 ?
Quoting Wikipedia :
HTTP/2 (originally named HTTP/2.0) is a major revision of the HTTP network protocol used by the World Wide Web. It was derived from the earlier experimental SPDY protocol, originally developed by Google.
How is it different ?
What’s new is how the data is framed and transported between the client and the server.
Additional performance improvements in the first draft of HTTP/2 (which was a copy of SPDY) come from multiplexing of requests and responses to avoid the head-of-line blocking problem in HTTP 1 (even when HTTP pipelining is used), header compression, and prioritization of requests
Who/What supports HTTP/2
Servers
Most major web servers now support HTTP/2. Check Wikipedia.
One that is of particular interest to us is IIS. IIS running on Windows 10 or Windows Server 2016 supports HTTP/2.
However, Azure’s App Service is yet to support HTTP/2.
Clients
Almost all browsers already support HTTP/2 in their most current release, and current data shows that over 50% of users are on HTTP/2-capable browsers already.
CDNs
Both the CDNs we are using - CloudFront and Azure CDN support HTTP/2