HTTP/2 helps with parallel resource loading, but that’s not the problem in this case—subresources like we’re talking about here are largely going to be loaded serially because that’s how things are. HTTP/2 Server Push might have helped some of the problem, but it’s more or less died because the way it was designed had serious problems and fixing them was going to take more effort than it was worth.
But when I say “having zero subresources”, I actively mean having zero subresources. The bit that really startles people is how much faster a page with inlined scripts and styles is (up to a point, but that point is typically over a hundred kilobytes of each) than a page with subresources present in a warm cache where the browser doesn’t even need to revalidate. Letting the browser just tear through it all rather than having to mess around with caches has, as I say, a bigger effect than people normally expect.
But when I say “having zero subresources”, I actively mean having zero subresources. The bit that really startles people is how much faster a page with inlined scripts and styles is (up to a point, but that point is typically over a hundred kilobytes of each) than a page with subresources present in a warm cache where the browser doesn’t even need to revalidate. Letting the browser just tear through it all rather than having to mess around with caches has, as I say, a bigger effect than people normally expect.