Gzip vs. Brotli für schnellere Websites
Wir haben in dieser Woche allen Servern ein schon länger geplantes Feature spendiert, das für mehr Speed durch kleinere Dateien sorgt. Brotli, was nichts mit dem Schweizer Gebäck zu tun hat, sondern bei dem es sich um einen Kompressionsalgorithmus handelt.
Dieser von Google schon 2016 entwickelte Algorithmus produziert kleinere Dateien als das für Websites gern genutzte Format GZIP und dies bei zugleich vergleichbaren Komprimierungsgeschwindigkeiten. Brotli ist seit dieser Woche auf allen unseren Servern automatisch aktiv.
Brotli wurde von Googles “Compression Team” entwickelt, das in den Züricher Büros des Internetgiganten zu Hause ist. Dies ist auch der Grund für den Namen, denn dieser reiht sich damit in eine Sammlung von Tools ein, die auf Namen wie Zopfli, Gipfeli oder Guetzli hören. Allesamt Schweizer Backwaren, wobei besagte eigentlich korrekt Brötli lauten müsste.
BROTLI vs. GZIP
Textdateien wie HTML, CSS oder JavaScript haben den Vorteil, dass sie sich mit Kompressionsalgorithmen drastisch verkleinern lassen. Bisher befand sich für die Komprimierung bei uns auschließlich die GZIP-Kompression im Einsatz.
Mit Brotli komprimierte HTML-, CSS-, und JavaScript-Dateien sind im Schnitt rund 20% kleiner als deren Gegenstücke im GZIP-Format, unterscheidet sich aber auch nach Typ (Quelle: Akamai):
– Bei HTML spart Brotli 21% mehr Speicherplatz als GZIP.
– bei JavaScript sind es 14%
– und bei CSS 17% kleinere Dateien als mit GZIP.
Die genaue Einsparung ist natürlich abhängig der Dateien und der verwendeten Kompressionsstufe. Diese Stufe kann über die Konfigurationseinstellung des jeweiligen Tools beeinflusst werden:
– GZIP besitzt 9 Stufen, die eingestellt werden können: Auf Stufe “1” ausführen, wird die Datei am wenigsten komprimiert, dafür erfolgt die Komprimierung sehr schnell. Bei der Ausführung mit Stufe “9” ist Dateneinsparung am größten, der Vorgang ist jedoch recht langsam. GZIP verwendet als Standardeinstellung die Stufe “6” für ein Gleichgewicht zwischen Geschwindigkeit und Komprimierung.
– Brotli besitzt 11 solcher Stufen. Genau wie bei GZIP gilt bei der Stufe “1”, dass die Kompression sehr schnell, aber weniger effektiv erfolgt. Bei der Stufe “11” ist diese sehr langsam, aber bietet die größte Einsparungen bei der Dateigröße. Brotli besitzt in diesem Sinne keine Standardeinstellung bzw. wird immer mit einer Einstellung von “11” ausgeführt, was bedeutet, dass Sie enorme Dateneinsparungen erzielen, aber im Gegenzug eine viel langsamere Komprimierungsgeschwindigkeit.
Akamai hat vor einigen Jahren einen umfangreichen Test ausgeführt. Dieser nahm als Ausgangsbasis die Standard-Einstellung Kompressionsstufe 6 von GZIP und im Vergleich ergab sich als direkt vergleichbare Einstellung die Stufe 4 bei Brotli, die dennoch eine um 9% kleinere Dateigröße bei einer 21% höheren Kompressionsgeschwindigkeit ergab.
Voraussetzungen für BROTLI
Brotli ist in allen Webspace- und Server-Paketen automatisch aktiv und in Verbindung mit Nginx im Einsatz. Allerdings gibt es Voraussetzungen, die erfüllt sein müssen, damit es auch genutzt werden kann:
– Brotli kann – by Design – nur über verschlüsselte Verbindungen, also HTTPS, ausgeliefert werden.
– Brotli spielt seine Stärken bei statischen Dateien aus. Deshalb werden von unseren Servern nur Textdateien (also HTML, CSS oder JavaScript) als Brotli komprimiert ausgeliefert, wenn diese Dateien bereits auf dem Dateisystem vorhanden sind. Werden diese Dateien zur Laufzeit dynamisch generiert (z.B. durch ein CMS), werden sie weiterhin als GZIP-komprimierte Versionen ausgespielt.
– Der Browser des Besuchers der Webseite muss Brotli unterstützen. Dies ist jedoch bei allen gängigen und aktuellen Browsern wie Edge, Firefox, Chrome, Safari, Opera sowie Safari für iOS und der Android-Browser der Fall. (Ab welcher Version Brotli unterstützt wurde, kann auf der Seite von https://caniuse.com/ überprüft werden)
Sollte der Browser keine Brotli-Dateien verarbeiten können oder es sich um eine unverschlüsselte Verbindung handeln, liefern unsere Server automatisch als Fallback weiterhin die GZIP-Variante aus.
Ausgabe prüfen
Beim Aufruf der Datei über den Browser sollte im Header “Content-Encoding” ein “br” für Brotli erscheinen.
Schnellere Webseiten? Automatisch
Mit der Aktivierung von Brotli wurde eure Webseite im Normalfall nochmals einen Tick schneller, weil durch die Komprimierung weniger Daten zum Browser des Besuchers übertragen werden müssen. Und das automatisch.
Als Standard-Einstellung für das Kompressionslevel haben wir uns übrigens für Stufe 5 entschieden, da dies in Tests ein ausgewogenes Verhältnis zwischen Einsparung der Datengröße und Performance besitzt.
Übrigens, über diese Webseite kann eine beliebige URL getestet werden. Anhand der zurückgelieferten Dateien wird über eine Simulation der übrigen Stufen einen Empfehlungswert für die Brotli-Kompressionsstufe ermittelt: https://tools.paulcalvano.com/compression.php
In unseren Tests einzelner Seiten wurde übrigens meist Level 5 für Brotli ausgegeben 😉
Interessanter Artikel mit informativem Inhalt