Im Juli zeigten wir die Funktionsweise von HTTP/2. Warum ist HTTP/2 schneller, was kann der Push Service. Wie kann ich das für Joomla nutzen?
Lest hier nach, welche Erfahrungen wir gemacht haben.

HTTP /2 für Joomla

Bereits im Mai 2015 wurde HTTP/2 als Nachfolger von HTTP/1.1 verabschiedet. An der Entwicklung des überarbeiteten Protokolls waren Google (SPDY) und Microsoft (HTTP Speed+Mobility) maßgeblich beteiligt und trieben die Fortentwicklung mit ihren eigenen Vorschlägen voran.
HTTP/2 hat das Ziel, die Übertragung zu beschleunigen und optimieren - und - der neue Standard soll vollständig abwärtskompatibel zu HTTP/1.1 sein.
Einige wichtige, neue Möglichkeiten des neuen Protokolls sind:

  • das Zusammenfassen mehrerer Anfragen (Multiplex)
  • Datenkompressionsmöglichkeiten
  • binär kodierte Übertragung von Inhalten
  • Server-initiierte Datenübertragungen (push-Verfahren)
  • verschlüsselte Übertragung per SSL Zertifikat ist erforderlich

Das Hypertext Transfer Protokoll (HTTP)

Mit Blick in die Entwicklung des HTTP wird regelmäßig das Jahr 1991 als der Start des Übertragungsprotokolls genannt. Damals baute jeder Request (also jede Anforderung, Elemente wie z.B. Bilder, Scripte, oder Schriften zu laden) eine neue TCP-Verbindung auf. Das war zu Beginn des Internets auch noch kein großes Problem, da Anfangs die Webseiten überwiegend mit Text und HTML in die weite Welt geschickt wurden.

Optimierungen des Übertragungsprotokolls

Wie wir alle wissen, wurde das Web schneller, bunter und interessanter. Das einfache HTML mit Text wurde/wird manigfach angereichert durch Bilder, Scripte, Schriften usw. Deshalb wurde bereits 1999 HTTP1.1 mit div. Optimierungen eingeführt (z.B. Keepalive, Pipelining, Trace, Content length Field, Caching usw.).
Dennoch bleibt es dabei, jedes Element erfordert einen Request und einen Response. Und da Webseiten viele Elemente, (z.B. CSS, verschiedene Javascriptbibliotheken, Bilder) haben, fallen immer noch viele Anfragen/Antworten zwischen Server und Client an.
-> Websites sind immer noch langsam
PageSpeed Profis arbeiten mit CDN Lösungen und diversen Mechanismen um eine schnelle Auslieferung einer Website zur ermöglichen.

HTTP/2 ist schneller!

Wie bereits Eingangs genannt gehört zu den wichtigsten Vorteilen, dass Requests zusammengefasst (Multiplex) werden können. Das bedeutet im Idealfall, dass alle Elemente über eine bestehende TCP Verbindung transportiert werden können. Zudem können Datenkompressionsmöglichkeiten in Anspruch genommen werden und es kann eine binär kodierte Übertragung von Inhalten stattfinden. Darüber hinaus gilt auch die Server-initiierte Datenübertragung (Push-Verfahren) zu den sehr interessanten und vielversprechenden Vorteilen des HTTP/2 Protokolls.
Ein paar Links:

Wie bei nahezu allen Weiterentwicklungen im Web, muss auch Clientseitig, also der Browser, mit dem Fortschritt mithalten. Wobei in der Regel so ziemlich alle modernen Browser das neue HTTP/2 unterstützen. Welche Browser unterstützt werden, findet ihr hier.

Browserhersteller fordern Verschlüsselte Übertragung

Da die Browserhersteller (allen voran Google) ein großes Interesse an einem sicheren Internet haben, nutzten die Browserlieferanten, dass zur Nutzung des HTTP/2 Protokoll ein SSL Zertifikat erforderlich ist. Das heißt im Umkehrschluss, dass ihr für die Domain, über die ihr eure Website ausliefern wollt, zwingend ein SSL-Zertifikat haben muss, um das Serverseitige HTTP/2 nutzen zu können!

Das Push Verfahren

Das Push-Verfahren gehört aus meiner Sicht zu den interessantesten Aspekten des neuen Protokolls überhaupt. Verkürzt dargestellt bedeutet es, dass der Server bereits im Voraus weiß, was der Client als nächstes braucht und stellt es diesem bereits zur Verfügung, bevor es vom Client angefordert wird.
Um das Push-Verfahren nutzen zu können, muss der Server als auch die Website diese Möglichkeit zur Verfügung stellen. Es nutzt also nichts, wenn der Server zwar so konfiguriert ist, dass das Push-Verfahren genutzt werden kann, aber die Website selbst für das Pushen nicht vorbereitet wurde.
So könnt Ihr das Pushen manuell durch senden eines entsprechenden HTTP Headers in Gang setzen z.B:
.htaccess
<FilesMatch "\.html$">
Header set Link "; rel=preload; as=style"

Oder direkt im HTML Dokument eures Templates:

Oder per Plugin
https://extensions.joomla.org/extension/http-2-server-push/
Mit einem guten, ausgefeilten Push Verfahren können sicherlich sehr interessante Pagespeedergebnisse erzielt werden. Wer sich für dieses Thema mehr interessiert, findet hier weitere Infos server push do it right

Experimente mit HTTP/2 an einer Joomla Seite

Wie es sich für eine ordentliche Joomla Gruppe gehört, haben wir eine kleine Versuchsstation aufgebaut:
Wir testen eine Seite, die wir auf einem Testserver mit HTTP /2 Protokoll und einmal ohne HTTP /2 Protokoll ansteuern. Um es vorweg zu nehmen, die Seite läuft auf zwei unterschiedlichen Servern. Somit ist ein 100%iger Vergleich nicht wirklich möglich. Wir wollen jedoch die Vorzüge von HTTP /2 darstellen und dafür sollte diese Versuchsstation ausreichen.

Der Debug Test - wir sind glücklich

Ein ziemlich einfacher und schneller Performance Test mit einer Joomlaseite kann über den Joomla Debugger gefahren werden. Das machen wir - wir aktivieren also über die Konfiguration im Reiter System die Debugging Ausgabe. Und rufen die Seite über die unterschiedlichen Server auf - und - Rrrrrums!
Die Seite mit HTTP /2 lädt viel schneller 11,32ms vs. 54,17ms. Das entspricht einer Reduzierung um das 4,78 fache!

debug ergebnis joomladebug ergebnis joomla

Das hat doch schon mal richtig Spaß gemacht. Beflügelt von dieser grandiosen Reduzierung der Ladezeit, ohne den geringsten Aufwand gehabt zu haben, schicken wir die Seite in den Pagetest von Google: Test my Site
Und auch hier eine geglückte Reduzierung um 50% von 6s(!) auf 3s. Wir wollen hiermit nicht behaupten, dass ein Ladezeit von 3s gut ist. Wir untersuchen hier lediglich die Steigerung der Geschwindigkeit. Die ist hier erfolgt.

ergebnis Test my Site mit Googleergebnis Test my Site mit Google bei http/2

Wir wollen noch mehr sehen und schicken die Seite in den Pagespeedtest von Google
Hier sieht das Ergebnis schon etwas nüchterner aus: Mit HTTP/2 holen wir 91 von 100 Punkten (in der Desktopansicht!) wohingegen die "normale" Seite 86 von 100 Punkten holt. Die Steigerung der Punkte ist doch schon mal gut, wenn man bedenkt, dass an der Seite nichts gemacht wurde und diese aus dem Stand heraus besser und schneller lädt.

Manchmal haut die Realität der Hoffnung eine aufs Maul

Die Hoffnung, aufgrund der beschriebenen Features von HTTP/2 an der Seite nichts mehr machen zu müssen, zerschlägt sich jäh mit dem folgenden Webpage Test:
Die HTTP/2 Seite benötigt 2,31sek. und die "normale" Seite lädt in 2,1sek.! Bum. Das sitzt erst mal kräftig.
Sicher ist man nun geneigt, zu sagen, dass der Cache aktiviert ist... Da die beiden Server allerdings stets von anderen Clients aufgerufen werden, sollte der Browsercache hier keine Rolle spielen. Kommt also das Caching von Joomla zum Tragen. Da das Caching bei beiden Seiten gleich eingestellt ist und die beiden Seiten mehrmals aufgerufen wurden, wird die Seite in beiden Fällen aus dem JoomlaCache (mit gleichen Inhalten) zur Verfügung gestellt. Somit sind die Vergleiche korrekt.

ergebnis webpage testergebnis webpage test mit http/2

Fazit

Wie die unterschiedlichen Tests zeigen, reicht es nicht aus eine Seite zu bauen ohne auf die Performance zu achten und darauf zu spekulieren, dass die Auslieferung über HTTP/2 ausreicht, um die Seite schneller zu machen.
Es werden zwar bessere Ergebnisse bei den Google Tests (TestmySite und Pagespeed insights) erzielt, aber "schnell" wird das Ding dadurch nicht. Dies zeigt sich insbesondere dann, wenn die tiefschürfenden Tools auf die Seite losgelassen werden. Dort zeigt sich dann, dass eine Optimierung der Seite (insbesondere hinsichtlich des Datenvolumens und des Wasserfalls) unerlässlich ist.
In dieser Beschreibung gehen wir auf die einzelnen Aspekte der weiterführenden Tools nicht näher ein, da wir lediglich einen globalen Vergleich zwischen "altem" und "neuem" Auslieferungsprotokoll fahren wollten.

HTTP/2 ist gerade am Anfang

Bei der Einrichtung des Vergleichs mussten wir feststellen, dass es bereits eine gewisse Anzahl an Hostern gibt, die HTTP/2 zur Verfügung stellen. Jedoch gibt es hier noch enorm viel Steigerungspotenzial. Darüber hinaus muss auch auf die Serverkonfiguration geachtet werden und mit dem Hoster abgestimmt werden.
Insgesamt muss an dieser Stelle gesagt werden, dass zwischen dem Stand der Technik und der tatsächlichen Verfügbarkeit eine große Lücke herrscht. Wer also ganz vorne mitspielen will, sollte in der Lage sein, einen Server selbst (und richtig!) betreiben zu können und seine Seite gut zu optimieren.

Server Pushing muss beim Server eingestellt sein

Das Push-Verfahren hat leider gar keine Vorteile gebracht. Wir haben dann beim Hostingprovider nachgefragt und zu unserer großen Überraschung erfahren, dass das Push-Verfahren Serverseitig gar nicht eingerichtet war.
Das Push-Verfahren verspricht schon ein sehr spannendes Feature zu sein. Es wird sich ganz sicher lohnen, diesem Verfahren eine hohe Aufmerksamkeit zu widmen.