Open top menu

Was ist eigentlich HTTP/2 ?

Neben dem ganzen Rumgeheule das die IPv4-Adressen ausgehen (was insofern schlimm ist, als das seit Jahren die großen Hoster es scheinbar nicht schaffen, IPv6 vernünftig einzubinden) wird derzeit eine weitere Kuh durch das Dorf getrieben: HTTP/2. Bei allen Optimierungsversuchen in den letzten Jahren (HTML5 / CSS3) wurde immer mehr klar, dass eine vernünftige Webapp mit dem alten HTTP-Protokoll nicht ohne hohe Last umzusetzen ist.

Screenshot des RFC 7540 - HTTP/2

Screenshot des RFC 7540 – HTTP/2

Einfach ausgedrückt ist HTTP/2 die Version 2.0 des HTTP-Protokolls. Es soll nachhaltig einige Probleme mit dem alten Protokoll beheben, es schneller machen und bessere Web-Applikationen erlauben. Neben vielen Detail-Änderungen soll HTTP/2 grundlegend folgende wirklich großen Änderungen enthalten:

Komprimierte HTTP-Header

Der Inhalt einer Seite liess sich bisher mit ein wenig Konfigurations-Aufwand durchaus komprimieren, nicht aber der Header. Dies ist aber insofern wichtig als das ein Browser auch Header versendet / erhält, wenn er den Status gecachter Dateien abfrägt (hat sich etwas geändert, oder eher nicht?). Die Header machten einen Riesen-Teil des Traffics im Internet aus. Der komprimierte Header wird den Browser weder schneller, noch langsamer machen, aber das Internet im Ganzen stark entlasten.

Server Push

Eine Möglichkeit, die bereits mit zum Beispiel den HTML5 WebSocket zur Verfügung steht, hält direkten Einzug in den Server. Allerdings ist die Anwendungsmöglichkeit im Server etwas differenziert. Während man mit den HTML5 WebSockets zum Beispiel pushen könnte, das neue Mails existieren, kann der Server nun eigenständig Verbindung zum Client aufnehmen. Dieser requestet zum Beispiel die Startseite einer Webseite, und der Server pusht automatisch alle damit verbundenen CSS und JavaScript-Dateien automatisch, ohne das der Client diese noch extra anfordern müsste.

Paralleles Laden über eine einzige TCP-Verbindung

Derzeit öffnet der Client für jede abzurufende Datei eine neue TCP-Verbindung, lädt diese herunter und schließt die Verbindung wieder. Parallel ist daran nichts, sondern man öffnet lediglich eine beliebige Anzahl von Verbindungen gleichzeitig. Das neue Protokoll soll wirklich parallel in einer einzigen Verbindung laden. Was sowohl die Anzahl der Requests auf dem Server verringert, als auch schnelleres Laden zur Folge hat.

Grundlegend beruht das Protokoll auf SPDY (sprich: Speedy) und ist seit Mai im RFC 7540 definiert. Es beseitigt weitere Netzwerkschwächen von HTTP/1.1 die vor allem einen Zustand verhindern sollen, das die Übertragung das Rendern von Seiten blockt, bzw. der Client in Zustände gerät, in denen er zu lange warten muss, und faktisch eine Pause einlegt.

Zusammenfassend kann man also sagen: weniger Traffic fürs Internet, weniger Last auf dem Server, schnellere Seiten. Willkommen http/2 ! ;)

Keywords
Guido
Geschrieben von Guido

Guido Mühlwitz ist Freiberufler mit Schwerpunkt HTML5, Zend Framework 2 / Node.js und individueller WordPress Plugin Entwicklung. Wenn er sich nicht gerade bei Twitter über PHP aufregt, bloggt er über aktuelle Themen aus dem Bereich der Anwendungsentwicklung.

Noch keine Kommentare.

Es hat noch niemand einen Kommanter zu diesem Artikel geschrieben.

Leave a comment