Eine WordPress-Seite besteht selten aus nur einer Datei: Zum HTML kommen Dutzende Stylesheets, Skripte, Bilder und Schriften. Mit HTTP/1.1 bearbeitet jede Verbindung nur eine Anfrage zur selben Zeit, also muss der Browser mehrere Verbindungen öffnen und sich in die Warteschlange stellen. HTTP/2 und danach HTTP/3 wurden entwickelt, um diese vielen kleinen Austausche effizienter zu transportieren, ohne an der Bedeutung der Anfragen etwas zu ändern: Methoden, Statuscodes und Header bleiben dieselben.
HTTP/2: Multiplexing
HTTP/2, heute in RFC 9113 beschrieben (sie ersetzt RFC 7540), zerlegt Nachrichten in binäre Frames. Jeder Austausch wird zu einem Stream, und viele Streams laufen gleichzeitig über eine einzige Verbindung: Ein langsamer Stream hält die anderen nicht mehr auf. Die Header, die sich von Anfrage zu Anfrage stark wiederholen, werden mit HPACK komprimiert.
Die RFC räumt eine Grenze ein: Das Head-of-Line-Blocking von TCP ist nicht gelöst. Geht ein Paket verloren, hält TCP alles Nachfolgende bis zur erneuten Übertragung zurück, und alle Streams warten. Für HTTP/2 über TLS schreibt der Standard TLS 1.2 oder neuer vor, und die Apache-Dokumentation erinnert daran, dass die meisten Browser HTTP/2 nur mit https-Adressen sprechen.

HTTP/3: ein anderes Transportprotokoll
HTTP/3 (RFC 9114) übernimmt dasselbe Modell, setzt aber auf QUIC (RFC 9000), ein sicheres Transportprotokoll, das in UDP-Datagrammen unterwegs ist. QUIC verwaltet die Streams selbst: Sie sind voneinander unabhängig, und ein Verlust verzögert nur den betroffenen Stream. Die TLS-1.3-Verschlüsselung ist Teil des Handshakes, was die Zahl der Roundtrips bis zum ersten Byte senkt, und eine Verbindung kann einen Netzwechsel überstehen, etwa vom WLAN ins Mobilfunknetz. Die Header-Komprimierung heißt nun QPACK.
Der Browser erfährt von HTTP/3 über den Header Alt-Svc, der bei einer ersten Verbindung per HTTP/2 oder HTTP/1.1 mitgeschickt wird: Er teilt mit, dass dieselbe Website auch per h3 auf einem UDP-Port antwortet. Blockiert eine Firewall UDP, bleibt der Browser einfach bei HTTP/2.
Für WordPress
- Prüfe die verwendete Version im Tab „Netzwerk“ der Entwicklertools deines Browsers (Spalte „Protokoll“: h2 oder h3).
- Am einfachsten ist oft ein CDN, das unabhängig von deinem Server HTTP/3 mit den Besuchern spricht. LiteSpeed bietet es ebenfalls an; für Nginx gibt es das HTTP/3-Modul seit Version 1.25.0, laut Dokumentation weiterhin als experimentell eingestuft.
- Unter Apache läuft HTTP/2 über mod_http2 und die Direktive
Protocols h2 http/1.1; die Dokumentation empfiehlt das MPM event, denn mit prefork bearbeitet eine Verbindung nur eine Anfrage zur selben Zeit. - Öffne UDP 443 in der Firewall des Servers, wenn du HTTP/3 selbst aktivierst.
Wie stark sich das auf die Performance auswirkt, hängt von der Website, dem Netz und der Zahl der Dateien ab; die von Google berücksichtigten Performance-Signale behandeln wir in unserem Beitrag über HTTPS, HSTS und Sicherheits-Header.