PageSpeed audit beveelt Brotli aan. Het actieve team brotli on; brotli_comp_level 11 op nginx voor alles — inclusief een JSON API van tweehonderd kilobyte die bij elk verzoek wordt gegenereerd. De tijd tot de eerste byte neemt toe van honderdtwintig milliseconden naar driehonderdtachtig op een VPS met twee vCPU; de Lighthouse-score gaat omhoog op de statistiek 'overgedragen bytes'. Mobiele gebruikers voelen de traagheid.
Compressie verkleint bytes - het kost CPU en soms vertraging tot de eerste byte. Brotli versus gzip is geen religie: het is een beslissing over waar en op welk niveau je wilt comprimeren, afhankelijk van het type inhoud en de serverbelasting.
gzip vs Brotli: de compromissen
| Algoritme | Compressie | Compressiesnelheid | Typisch gebruik |
|---|---|---|---|
| gzip-niveau 6 | Goed | Snel | Dynamische HTML, API |
| brotli niveau 4 tot 6 | Beste | Matig | Dynamisch indien processor beschikbaar |
| brotli niveau 11 + precompressie | Maximaal | Offline | statisch .js/.css |
Precompressie bestaat uit het stroomopwaarts genereren van file.js.br (brotli -k file.js) en het vervolgens aanbieden met Content-Encoding: br — nul CPU-belasting op verzoektijd.
Het comprimeren van een JPEG-afbeelding betekent dat u de processor moet betalen voor nul bytes die zijn bespaard.
nginx, Apache, CDN: een enkele laag
Configureer op nginx gzip on; gzip_types...; brotli op; brotli_types ...; met gematigde niveaus (vier tot zes). Cloudflare en vergelijkbare CDN's bevatten vaak compressie aan de rand - schakel dubbele compressie uit aan de oorspronkelijke kant.
Bij gedeeld wordt soms compressie opgelegd door het configuratiescherm. Meet de impact op de vertraging tot aan de eerste byte voordat meerdere lagen worden gestapeld.
Dynamisch versus statisch: twee strategieën
Voor statisch produceert de build-pijplijn .gz- en .br-bestanden; nginx schakel gzip_static in; brotli_static on;. Voor dynamisch is gzip-niveau vijf vaak voldoende: meet de vertraging op percentiel 95 voordat een agressieve Brotli wordt geactiveerd. Voor JSON API's wordt compressie nuttig vanaf één tot twee kilobyte; micro-reacties profiteren hier niet van.
HTTP/2 en HTTP/3 wijzigen de headercompressie, niet de comprimeerbare hoofdtekstlogica.
Gedeeld en VPS: hostbeperkingen
Op shared wordt compressie vaak globaal ingeschakeld door de host; u kiest niet altijd het algoritme of niveau. Meet voordat u een PHP-laag of WordPress-plug-in toevoegt die al comprimeert wat de server comprimeert. Op VPS heb je controle over nginx of Apache, maar een VPS met twee vCPU's zal snel verzadigd raken met Brotli-niveau elf op dynamische HTML onder Black Friday-belasting.
Controleer het hostingbestand in de overzicht om te controleren of edge-compressie of CDN is inbegrepen. Soms komt de beste winst van het hostingproduct in plaats van van een agressieve nginx-instelling.
Maatregel: bytes versus latentie
Vergelijk overgedragen bytes (browserontwikkelaarstools), tijd tot eerste byte (navigatietiming) en CPU-belasting van de oorsprong onder echte belasting. Het doel is om bytes te winnen zonder de vertraging op kritieke pagina's met meer dan vijftig milliseconden te vergroten.
Veelvoorkomende fouten
Dubbele PHP-compressie plus nginx. gzip_min_length 256 vergeten. Brotli is toegepast op SSE- of WebSocket-streams, waar dit ongepast is. Maximaal niveau voor HTML gegenereerd onder belasting, waardoor een bescheiden VPS wordt omgezet in een CPU-knelpunt.
De top: Lighthouse-score, verminderde ervaring
Comprimeren zonder latentie toe te voegen betekent het statische precomprimeren, de dynamiek modereren en op de juiste netwerkhop comprimeren (netwerkrand in plaats van oorsprong).
Beslis en ga vooruit zonder blinde vlek
Controleer MIME-typen en elimineer onnodige compressie op reeds gecomprimeerde formaten. Precomprimeer statische assets in de build en serveer ze via nginx of CDN. Pas gzip of gematigde Brotli toe op dynamische HTML na meting. Zorg ervoor dat slechts één laag elk antwoord comprimeert. Meet de vertraging tot de eerste byte voor en na eventuele wijzigingen. Vergelijk hosts en CDN's via de overzicht en de vergelijker.
Veelgestelde vragen
Is Brotli altijd beter dan gzip?
Brotli comprimeert tekst over het algemeen beter, vooral op hoge niveaus, maar het comprimeren gaat langzamer. Het is ideaal voor voorgecomprimeerde statische assets; gzip of Brotli op gemiddeld niveau zijn het meest geschikt voor dynamische HTML.
Waar te comprimeren — nginx, CDN of PHP?
Geef de voorkeur aan netwerkrand of nginx voor statische bestanden. Vermijd compressie in PHP als nginx dit al doet. Controleer bij gedeeld de processorlimieten die door de host zijn opgelegd.
Welke MIME-typen moeten worden gecomprimeerd?
text/html, text/css, application/javascript, application/json, image/svg+xml — niet de reeds gecomprimeerde JPEG, PNG of WebP.
Hoe kan ik Brotli in oudere browsers weergeven?
Onderhandeling via Accept-Encoding: Brotli indien ondersteund, anders gzip. Het CDN beheert de twee versies vaak in afzonderlijke cache met behulp van de Vary-header.
Minder bytes tellen alleen als de eerste byte op tijd arriveert.
