[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.

http2-dashboard

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:

http2-creative-gallery

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).

http2-creative-gallery-details

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.

http2-iis10

However, Azure’s App Service is yet to support HTTP/2.

http2-azure

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.

http2-can-i-use

CDNs

Both the CDNs we are using - CloudFront and Azure CDN support HTTP/2

Extras