Was ist HTTP/2 und was bringt mir das?
HTTP/2 gehört neben Pagespeed zu den neuen Buzz Words im Web Hosting Bereich. Viele sprechen darüber oder werben bereits damit. Die einen erzählen Märchen und die anderen gar nichts. Was ist HTTP/2 und was macht es genau?
Das Protokoll HTTP/2
HTTP/2 bezeichnet die neuste Version des Verbindungsprotokolls HTTP (Hypertext Transfer Protocol) und wurde im Jahr 2015 veröffentlicht. Das Ganze ist also noch sehr jung. HTTP/2 verspricht geringere Latenzen bei der Kommunikation zwischen Browsern und Webservern, was durch Zusammenfassen und Komprimieren der einzelnen Anfragen erreicht wird und bringt damit mehr Geschwindigkeit beim Aufruf von Websites. Das sogenannte Streaming überträgt somit keine Informationen in Textform, wie dies bei HTTP/1 üblich war, sondern in binärer Form und in einem Aufwasch. Das geht natürlich schneller, da kein Konvertierung durch Browser und Server vorgenommen werden muss und die ganzen einzelnen Anfragen (Requests) wegfallen.
Voraussetzung für die Verwendung von HTTP/2 ist allerdings, dass die Seite mit einem SSL Zertifikat betrieben wird, also per HTTPS aufgerufen wird. Dies ist keine Limitierung durch das neue Protokoll, sondern wurde von den Herstellern der Browser so entschieden. Durch unsere kostenlosen SSL Zertifikate stellt dies jedoch keine Hürde dar.
Grundsätzlich funktioniert HTTP/2 bereits automatisch und ist bei unseren NGINX Angeboten von vornherein aktiviert. Somit haben Sie schon eine Steigerung der Leistung durch das Streaming mit Komprimierung durch HTTP/2. Das Ganze kann jedoch in Zukunft noch mehr….
HTTP/2 Push bringt in Zukunft nochmals einen Schub
Das HTTP/2 Modul bietet in Zukunft noch eine weitere Funktion mit dem Namen „push“. Mit Hilfe dieser Methode ist es möglich, dem Browser vorab schon z. B. JavaScript und CSS Dateien zu senden, bevor dieser überhaupt weiss, das diese Dateien benötigt werden, da das Rendering der Seite vielleicht noch gar nicht an dieser Stelle angelangt ist. HTTP/2 Push bringt daher in vielen Fällen nochmals einen ordentlichen Schub bei der Performance, vor allem beim ersten Aufruf der Seite durch den Besucher.
Jedoch funktioniert das Pushen nicht von alleine. Hierzu muss vom Webmaster Hand angelegt werden. Für die gängigen CMS Systeme gibt es hier bereits fertige Plugins, welche einem die Arbeit abnehmen. Nachfolgend eine Liste zur Integration von HTTP/2 push in Ihr CMS:
TYPO3: https://typo3.org/extensions/repository/view/http2_push
WordPress: https://de.wordpress.org/plugins/http2-server-push/
Contao: https://github.com/terminal42/contao-http2
Joomla!: https://extensions.joomla.org/extension/http-2-server-push/
Wenn man keine Möglichkeit hat, auf eines der fertigen Plugins zuzugreifen, muss das pushen manuell durch senden einen entsprechenden HTTP Headers in Gang gebracht werden. Das Sie exemplarisch wie folgt aus:
Apache .htaccess:
<FilesMatch "\.html$">
Header set Link "</css/styles.css>; rel=preload; as=style"
<FilesMatch>
NGINX Setup:
add_header Link "</css/styles.css>; rel=\"preload\";as=\"style\"";
Per PHP Script:
header("Link: </css/styles.css>; rel=preload; as=style");
Im HTML Dokument:
<link rel="preload" href="//example.com/widget.html" as="document">
Bis dieses Feature zuverlässig angeboten werden kann, wird allerdings noch etwas Wasser den Bach hinab fließen. Bei Apache ist HTTP/2 mit Push zwar verfügbar, jedoch als experimentell gekennzeichnet. Bei NGINX ist dieses Feature nur in der sehr teuren Plus Version enthalten und für die Community Version derzeit nicht verfügbar. So ganz einig ist man sich noch nicht, ob und wie das Ganze in die stabilen Versionen der Webserver einfließen soll. Patches und andere Lösungen sind zwar schon verfügbar, jedoch unserer Meinung nach nicht für den stabilen produktiven Betrieb geeignet.
Einen Teil der möglichen Leistungssteigerung fängt jedoch auch das Pagespeed Modul ab, welches ähnliche Techniken zur Verfügung stellt. Hierzu bringen wir in Kürze einen aufklärenden Blog Beitrag.
Wir bleiben auf jedem Fall an diesem Thema dran.