Why some clients got slower after enabling HTTP/2
I turned on HTTP/2 for a small static site expecting things to get faster. On two machines downloads got about half a second slower.
The short version: HTTP/2 is fine. Treating it as a speed feature is not.
The site makes six requests. Over HTTP/1.1 the browser opens six connections; h2 multiplexes them onto one. With six requests there was never much overhead to save.
The real problem is packet loss. h2 puts every stream on one TCP connection, so a single lost packet stalls them all. HTTP/1.1 loses one connection and the other five keep moving. A one or two percent loss rate on a transpacific link is normal, and that is when head-of-line blocking hurts.
The second cause was TLS. Session caching was off:
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets on;
saves a round trip on repeat visits, worth far more than h2 here. h2 stays on, but the effort goes into session reuse and time to first byte.