Brotli compression vs Gzip

La compressione HTTP

Il browser invia header Accept-Encoding: gzip, br, deflate per dichiarare quali algoritmi supporta. Il server comprime la risposta con uno di essi e risponde con Content-Encoding: br (o gzip). Per testo (HTML, CSS, JS, JSON, SVG, XML) la compressione riduce dimensioni 60-90%. Per binari già compressi (JPEG, MP4) inutile.

Gzip: lo standard storico

Gzip esiste dal 1992, basato su DEFLATE (LZ77 + Huffman). Supportato universalmente da decenni. Compressione tipica 70-80% su testo. Velocissimo (compressione livello 1-9, default 6). Bilanciamento ottimo CPU vs dimensione. Standard di fatto per web.

Brotli: l'evoluzione

Sviluppato da Google, standardizzato 2016 come RFC 7932. Combina LZ77, Huffman code, context modeling, dizionario predefinito di 120KB di parole comuni del web. Compressione tipica 75-85% su testo, 10-25% migliore di Gzip a parita di livello.

Confronto pratico

jQuery 3.7.1 (89KB raw): Gzip livello 6 ~31KB, Brotli livello 11 ~28KB. Bootstrap CSS 5.3 (227KB): Gzip ~25KB, Brotli ~21KB. Per HTML medio 50KB: Gzip ~10KB, Brotli ~8KB. Risparmio Brotli reale: 15-25% sui byte trasferiti.

Livelli di compressione

Gzip: 1 (veloce) - 9 (lento), default 6, on-the-fly tipicamente 1-4. Brotli: 1-11, livello 11 fortissimo ma lento (build-time). On-the-fly Brotli tipicamente livello 4-6. Strategia ottimale: pre-comprimi statici a livello max (build time), comprimi dinamici a livello veloce.

Come abilitare

Nginx: brotli on; brotli_static on; brotli_types text/css text/javascript application/json; brotli_comp_level 6; (richiede modulo ngx_brotli). Apache: mod_brotli + AddOutputFilterByType BROTLI_COMPRESS text/html. Cloudflare attiva Brotli automaticamente. Test: curl -H "Accept-Encoding: br" -I (verifica Content-Encoding: br).

Hai bisogno di aiuto?

Se vuoi un sito veloce ottimizzato dal team di G Tech Group, scrivici tramite il modulo di contatto.

Hai trovato utile quest'articolo?