Een WordPress-pagina is zelden één bestand: eerst de HTML, daarna tientallen stylesheets, scripts, afbeeldingen en lettertypen. Bij HTTP/1.1 verwerkt elke verbinding maar één verzoek tegelijk, waardoor de browser meerdere verbindingen moet openen en in de rij moet staan. HTTP/2 en daarna HTTP/3 zijn ontworpen om die vele kleine uitwisselingen efficiënter te vervoeren, zonder iets te veranderen aan de betekenis van de verzoeken: methoden, statuscodes en headers blijven hetzelfde.
HTTP/2: multiplexing
HTTP/2, nu beschreven in RFC 9113 (die RFC 7540 vervangt), knipt berichten op in binaire frames. Elke uitwisseling wordt een stream, en veel streams lopen tegelijk over één verbinding: een trage stream houdt de andere niet meer op. De headers, die van verzoek tot verzoek sterk op elkaar lijken, worden gecomprimeerd met HPACK.
De RFC erkent één beperking: de head-of-line blocking van TCP is niet opgelost. Gaat er een pakket verloren, dan houdt TCP alles wat erna komt vast tot het opnieuw is verzonden, en wachten alle streams. Voor HTTP/2 over TLS eist de standaard TLS 1.2 of nieuwer, en de documentatie van Apache wijst erop dat de meeste browsers alleen HTTP/2 spreken met https-adressen.

HTTP/3: een ander transport
HTTP/3 (RFC 9114) gebruikt hetzelfde model, maar over QUIC (RFC 9000), een beveiligd transportprotocol dat in UDP-datagrammen reist. QUIC regelt de streams zelf: ze zijn onafhankelijk, en een verlies vertraagt alleen de betrokken stream. De TLS 1.3-versleuteling maakt deel uit van de handshake, wat het aantal heen-en-terugreizen tot de eerste byte verkleint, en een verbinding kan een netwerkwissel overleven, bijvoorbeeld van wifi naar 4G. De headercompressie gaat over op QPACK.
De browser ontdekt HTTP/3 via de header Alt-Svc, die bij een eerste verbinding via HTTP/2 of HTTP/1.1 wordt meegestuurd: die meldt dat dezelfde site ook via h3 antwoordt, op een UDP-poort. Blokkeert een firewall UDP, dan blijft de browser gewoon bij HTTP/2.
Voor WordPress
- Controleer welke versie wordt gebruikt in het tabblad Netwerk van de ontwikkelaarstools van de browser (kolom Protocol: h2 of h3).
- Het eenvoudigst is vaak een CDN, dat HTTP/3 met de bezoekers spreekt, welke server je ook hebt. LiteSpeed biedt het ook; voor Nginx bestaat de HTTP/3-module sinds versie 1.25.0, en de documentatie noemt die nog steeds experimenteel.
- Op Apache loopt HTTP/2 via mod_http2 en de directive
Protocols h2 http/1.1; de documentatie raadt de MPM-module event aan, omdat bij prefork een verbinding maar één verzoek tegelijk verwerkt. - Open UDP-poort 443 in de firewall van de server als je HTTP/3 zelf inschakelt.
Het effect op de prestaties hangt af van de site, het netwerk en het aantal bestanden; de prestatiesignalen waar Google naar kijkt, komen aan bod in ons artikel HTTPS, HSTS en beveiligingsheaders.