Ich verwende seit einiger Zeit das ngx_brotli Modul im Nginx.  Da ich Ubuntu Xenial verwende setze ich mein PPA ein. Dort wird das Modul gegen ein aktuelles brotli Paket gebaut.

Die Konfiguration ist relativ einfach. In der nginx.conf im http Bereich reichen folgende Optionen.

brotli on;
brotli_comp_level 5;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/rss+xml application/x-javascript text/javascript image/svg+xml;

Wirklich nötig ist eigentlich nur „brotli on;“ , die anderen Optionen kann man nach belieben verändern.

Äußerst interessant ist „brotli_comp_level“, der Standard Wert ist 6. Je höher der Wert ist je stärker wird komprimiert. Der Nachteil ist, es dauert länger und die Webseite wird langsam. Man muss also einen guten Mittelwert finden.

Dazu habe ich eine relativ große Text Datei bei jedem Level mehrmals heruntergeladen und gemessen wie lange der Server braucht die Datei komprimiert bereitzustellen. Der Cash muss natürlich ausgeschaltet werden und ein wenig schwanken die Werte schon. Eine große Hilfe war curl mit der -w Option. Die Komprimierungszeit habe ich berechnet aus „time_starttransfer – time_pretransfer“.

Man kann erkennen das mit Level 10 die Komprimierungszeit fast eine Sekunde beträgt. Das ist natürlich viel zu lange. Daher nochmal ohne Level 10.

Man kann gut erkennen das die Levels 5 bis 9 alle eine fast gleiche Komprimierungsratio haben. Daher lohnt es sich in den meisten Fällen nicht ein Level höher als 5 zu wählen. Die Zeit von 0,74 Sekunden bei Level 5 ist ein guter Kompromiss, bei einer Größe von nur 7,51 %. Eine Alternative wäre Level 2, dort dauert es nur 0,51 Sekunden, es werden trotzdem Dateien mit nur 9,8 % ihrer eigentlichen Größe erreicht. Je kleiner die zu komprimierenden Dateien sind umso schneller ist es. Daher sehen die Diagramme bei jeder Datei ein wenig anders aus. Aber ich denke mit meiner Beispieldatei konnte ich viele Fälle abdecken.

Brotil und Nginx