Kompression ist eine einzige Einstellung mit großer, sofortiger Wirkung auf Text — HTML, CSS, JavaScript, JSON, SVG. Auf bereits Komprimiertes wirkt sie nicht, und sie dort zu verlangen kostet CPU für nichts.
Einschalten
gzip on;
gzip_vary on;
gzip_comp_level 5;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript
text/xml application/xml image/svg+xml;
Stufe 5 ist die nützliche Mitte. Stufe 9 kostet spürbar mehr CPU für ein bis zwei Prozent — und das bei jeder einzelnen Anfrage.
Was NICHT komprimiert wird
JPEG, PNG, WebP, MP4 und ZIP sind bereits komprimiert. gzip darüberlaufen zu lassen macht die Datei minimal GRÖSSER und verbrennt dabei CPU. Die Ausnahme ist image/svg+xml — SVG ist Text.
Brotli, wo es verfügbar ist
brotli on;
brotli_comp_level 5;
brotli_types text/plain text/css application/json application/javascript image/svg+xml;
Brotli ist bei Text typischerweise 15–20 % kleiner als gzip. Lassen Sie gzip daneben konfiguriert: Der Browser sagt, was er annimmt, und der Server wählt.
Prüfen, ob es auch passiert
curl -sI -H 'Accept-Encoding: gzip, br' https://yourdomain.com/ | grep -i content-encoding
Kein content-encoding-Header heißt, dass nichts komprimiert wird — oft, weil ein vorgelagerter Proxy den Anfrage-Header entfernt.
gzip_min_length zählt: Eine Antwort von 200 Byte zu komprimieren kostet mehr, als es spart, weil der Header-Overhead eine feste Größe hat. Ein Kilobyte ist eine vernünftige Untergrenze.
