Komprimierung (GZIP/Brotli)
Definition: GZIP und Brotli sind serverseitige Komprimierungsalgorithmen, die Textdateien – HTML, CSS, JavaScript, JSON, XML, SVG – vor der HTTP-Übertragung komprimieren. Der Browser dekomprimiert die Dateien nach dem Empfang automatisch und transparent. Browser und Server handeln das Komprimierungsformat über den Accept-Encoding-Request-Header und den Content-Encoding-Response-Header aus. GZIP ist seit über 20 Jahren der Standard und wird von nahezu allen Servern und Browsern unterstützt. Brotli ist ein neuerer Algorithmus von Google (2015), der im Vergleich zu GZIP typischerweise 15–25 % bessere Komprimierungsraten erreicht. Komprimierung ist eine der wirkungsvollsten Ladezeit-Optimierungen: eine 100 KB JavaScript-Datei wird auf 20–30 KB reduziert ohne eine einzige Code-Änderung.
Erläuterung
HTTP-Komprimierung ist ein serverseitiges Feature – kein Code-Change im Frontend nötig. Browser senden im Request-Header «Accept-Encoding: gzip, deflate, br» und signalisieren damit welche Algorithmen sie unterstützen. Der Server wählt den besten verfügbaren und antwortet mit «Content-Encoding: br» (Brotli) oder «Content-Encoding: gzip». Binäre Dateien (JPEG, PNG, WOFF2, MP4) werden bereits intern komprimiert und profitieren kaum von HTTP-Komprimierung – nur Textformate werden dadurch signifikant kleiner.
GZIP vs. Brotli im Vergleich
- GZIP: Deflate-Algorithmus-Basis; Level 1 (schnell, wenig Komprimierung) bis Level 9 (langsam, maximale Komprimierung); empfohlen: Level 5–6 als Kompromiss; Komprimierungsrate für JavaScript: typisch 70–80 % Reduktion; Browser-Unterstützung: 100 % aller Browser; Server-Unterstützung: universell
- Brotli: LZ77-Algorithmus + Huffman-Codierung + statisches Wörterbuch für Web-Content; Level 1–11; Level 4–6 empfohlen für dynamische Inhalte (ähnliche Geschwindigkeit wie GZIP); Level 11 für statische Dateien vorberechnet; 15–25 % besser als GZIP bei gleicher Kompressionsstufe; Browser-Unterstützung: alle modernen Browser (>96 %); nur via HTTPS
- Deflate: Älterer Algorithmus; vermeiden (Implementierungsunterschiede zwischen Servern); Accept-Encoding: deflate wird von Browsern zwar gesendet aber GZIP bevorzugen
- Komprimierungsraten-Benchmark: jQuery 3.6 minifiziert: 87 KB → GZIP: 31 KB (64 % Reduktion) → Brotli: 27 KB (69 % Reduktion); Bootstrap CSS minifiziert: 163 KB → GZIP: 23 KB (86 %) → Brotli: 19 KB (88 %); HTML-Dokument 50 KB → GZIP: 12 KB → Brotli: 10 KB
Server-Konfiguration
- Nginx GZIP: gzip on; gzip_comp_level 6; gzip_types text/plain text/css application/javascript application/json image/svg+xml; gzip_min_length 1024; gzip_vary on; gzip_min_length verhindert Komprimierung kleiner Dateien (overhead > benefit)
- Nginx Brotli: Erfordert ngx_brotli-Modul (Standard-Nginx enthält es nicht); brotli on; brotli_comp_level 6; brotli_types text/plain text/css application/javascript application/json; bei Nginx-Standard: GZIP verwenden oder CDN für Brotli
- Apache: mod_deflate für GZIP: AddOutputFilterByType DEFLATE text/html text/css application/javascript; mod_brotli für Brotli: AddOutputFilterByType BROTLI_COMPRESS text/html; Apache 2.4.26+ für Brotli-Unterstützung
- CDN-Komprimierung: Cloudflare, AWS CloudFront, Fastly: Brotli und GZIP automatisch ohne Server-Konfiguration; CDN komprimiert am Edge-Server nahe beim Nutzer; statische Assets precomprimiert speichern für maximale Performance; empfohlen wenn Server selbst keine Brotli-Unterstützung hat
Diagnose und Verifikation
- Browser DevTools: Network-Tab → Ressource klicken → Headers → «Content-Encoding: br» oder «Content-Encoding: gzip»; Size-Spalte zeigt transferierte Größe vs. Originalgrößе; «(from cache)» bedeutet kein neuer Transfer
- curl-Diagnose: curl -H "Accept-Encoding: gzip,br" -I https://example.com → prüft Response-Header; curl --compressed https://example.com -o /dev/null -w "%{size_download}\n" → Transfergröße messen
- Lighthouse / PageSpeed Insights: «Enable text compression» als Opportunity wenn Komprimierung fehlt; zeigt potenzielle Einsparung in KB; ein roter Hinweis dort bedeutet fehlende GZIP/Brotli-Konfiguration; einfachste Optimierungsmaßnahme mit sofortigem Impact
- Was nicht komprimieren: JPEG, PNG, GIF, WebP, AVIF: bereits komprimiert, kein Benefit; WOFF2: intern komprimiert; ZIP, PDF: bereits komprimiert; komprimierte Komprimierung erhöht CPU-Last ohne Größenvorteil
Performance-Impact für Marketing
- TTFB und FCP: Kleinere HTML-Dokumente: schnellerer Time to First Byte (TTFB); schnelleres First Contentful Paint (FCP) bei komprimiertem CSS/JS; direkter Core Web Vitals Impact; Google PageSpeed Score-Verbesserung messbar
- Mobile und 3G: Auf langsamen Verbindungen größter Impact; 100 KB JS-Datei auf 3G ohne Komprimierung: ~3,3 Sekunden; mit GZIP 30 KB: ~1 Sekunde; mit Brotli 25 KB: ~0,8 Sekunden; Tracking-Skripte und Conversion-Pixel laden schneller