- Loading 250 resources from the exact same domain, where HTTP/1.1 can load at most 2-6 in parallel
- Head of line blocking since all requests are going to the same host
- 4-6x as many TCP connections with HTTP/1.1, so 4-6x more likely to encounter TCP congestion/flow issues.
This test is only relevant to you if your website only uses a single hostname, and loads all dependent resources from that same hostname. Sadly the median number of domains accessed for a typical webpage is 18...
If you have more than 2-6 of your own resources (scripts, CSS, images) on a page it should be. Third party resources is orthogonal to that.
HTTP/2: 1.09s, 0.87s, 1.19s, 0.92s, 1.30s = average 1.07s
The slowest of five HTTP/2 results is still faster than the fastest HTTP/1.1 result, and on average it's nearly 50% faster.
(I'm on a 37 Mbps network in New York, using Firefox 40.0.3 on Windows 8.1 with a cleared cache.)
1.1 2.0
--- ---
2.03 3.60
2.00 3.19
1.85 1.92
1.72 3.69
2.11 4.64
2.13 4.13
1.92 2.35It's just netting you a larger share of the limited network resources at the expense of others on the network.
There is world map at the bottom of the page.
Feels like they may have exaggerated their fiber coverage of Greenland :)
I'm probably an outlier.
I do get better times for 2 on Firefox, but if I start Firebug and disable caching, the http 1 time does not change, but http 2 is bigger and at that point 2 is better by fraction of second (sometimes worse).
Interestingly on Konqueror http is consistently worse than http 1.
If a page that was designed to highlight performance of something that http 2 should be better at (making many small requests) doesn't show drastic improvement and sometimes http 2 looks worse, makes me doubt whether http 2 brings anything to the table
I'm not saying the test is "fair" but what you're describing isn't a fair scenario at all. I'm not sure if the latest fiddler or other dev proxy supports http2, but that might be a better way to judge.
Also, are you sure the the version of Konqueror you are using is actually using http2, or a fallback to 1.1?
I'd like to know more about how this benchmark runs and what it's actually measuring. Page load times and responsiveness are notoriously hard to define.
I don't mean to nitpick the benchmark too much, it's obviously measuring something, but it's also nice to be able to weigh it against other tests and design goals.
The HTTP/2 test does exactly what it's designed to do: opens a lot of connections and receives the images pretty much all at once.
This isn't to downplay HTTP/2, but it's something that should be noted for _this_ test.
I believe that HTTP/2 isn't opening many connections. It's opening one TCP connection and multiplexing many requests through that. This would allow for exploiting a pre-warmed TCP connection in subsequent requests. I've always felt that was a flaw in HTTP/2: with minor modifications, that multiplexing protocol could have been split out.
I'm interested to see how HTTP/2 could accelerate your modern jumbo media websites. The ones with a dozen or so tracking bugs, ads, etc. All splattered across multiple domains with ad servers that aren't quite as zippy as one would wish.
HTTP/2 1.46s
And 2.31 vs 0.64 at the second
I wonder if there's some setting wrong that makes this take 14s for me using http/1. Any ideas?
Edit: same with Chrome and similar on Sarafi/iPhone (6s vs 0.6). I wonder if the difference is magnified by higher latency because I'm in Europe? If yes, I guess http/2 is a godsend for all non-Americans.
You're right that in FF/Chrome for runs N+2 I get about half of the first run (0.86s for v2) so it looks like there's some kind of caching going on -- it's still twice as fast with v2.
HTTP/1.1: 2.06s HTTP/2: 0.45s
with Chrome 45 on 64-bit Debian 8
Not very dramatic diffence. Location Europe, using 4G connection.
HTTP 2.0 is surely nice for initial page load but for subsequent data loads I prefer websocket (in the context of SPAs).
There is notable difference here. Developer needs to write code to implement server-push in Websockets but HTTP2 servers will do that for you by sending all dependancy files with a single request.
Moto g, android 5.0.2, HSPA, chrome.
http/1.1 29.75, http/2 12.87