Need help Understanding HTTP 2 Loadout


I’m trying to figure out why the HTTP/2 loadout for a particular site is behaving like it is.

The attachment First18H2 shows the first 18 assets being loaded, with the origin site on H2. The other 17 assets come from 8 different CDNs. The next 3 assets being on H/2. So the first 4 assets, are all HTTP 2 (the 4th being Quic/Google Analytics)


The attachment First18H1 shows the first 18 assets being loaded, but the origin site is on HTTP 1.1. The next 4 assets after the first, are HTTP /2.


What I don’t understand is why the loadout looks like it does on First18H2…it looks like it loads the HTML first, then all other assets multiplex?

On First 18H1, it loads the HTML on HTTP 1.1 but then starts loading the other assets on H/2 almost immediately.

There are no primitives in the code to push assets or delay them.

Am I wrong in thinking that First18H2 should be looking more like First18H1?

Have you get some tests we can look at - it’s quite hard to determine what’s actually happening from those sketches and behaviour can be very dependent on which browser and server are in use

In the first example the highlighted H2 requests are from a seperate origin aren’t they?

Yes, all assets are coming from external CDNs outside of the origin.

The H2 requests are coming from a different CDN than the origin, in the first example.

By “tests” you mean Webpagetest graphics?

By tests I mean links to WPT results so I can look at which requests are coming from which origin etc.

Unfortunately I’m under contract that I can’t divulge who my client is in any way to the public. Even seeing the names of the CDNs will instantly out them. Is there anything else I can do?

Could I possibly just show the asset waterfall as shown by Webpagetest without the assets themselves…and just state what’s H1 and H2 much like what’s above?

Impossible to say with given context.

Provide your actual URL for testing.

This is an example with the first asset, the page HTML, loading first, and subsequent assets. Everything here is HTTP/2. Is this simply a matter of the TLS security keeping it from starting to multiplex?