Le pagine del Web 2.0 (ma per alcuni siamo già arrivati al 3.0) sono sempre più “pesanti” a causa di CSS, JavaScript e gli onnipresenti elementi multimediali (foto, video). Ecco perchè già da diverso tempo ci si affida a varie soluzioni che consentano di ridurne il peso ed agevolarne il caricamento.
Brotli è un progetto open source supervisionato da Google e presentato ufficialmente nel settembre del 2015 che ha lo scopo di velocizzare il recupero e la visualizzazione delle pagine inviate al browser. Nonostante siano passati diversi mesi, Brotli è riuscito solo di recente a gudagnare un buon supporto sul Web, grazie all’implementazione come metodo di compressione opzionale in Apache e Nginx (IIS offre supporto server side via estensione gratuita) o al suo deploy in offerte commerciali di noti vendor come Cloudflare – anche se restano ancora alcuni importanti nomi da convertire come Safari (riferimento dell’ecosistema iOS) ed Edge, il browser che ha raccolto l’eredità del “leggendario” Internet Explorer.
Brotli si è affacciato con decisione sulla scena a maggio 2016 con il rilascio della versione 51 di Chrome, il noto browser di Mountain View, che da quella data lo supporta pienamente – compatibilità estesa successivamente anche alla release 50.
Alcuni mesi dopo, a settembre 2016, è stata la volta di Firefox, storico rivale di IE che gode ancora di una buona popolarità. Nell’arco di poco tempo l’algoritmo open source ha raggiunto un tasso di adozione globale pari al 50%. E’ interessante ricordare che Brotli è utilizzabile esclusivamente con il protocollo HTTPS, imposizione che conoscendo l’attuale politica Google non dovrebbe sorprendere più di tanto.
Ma l’algoritmo è veramente in grado di competere con alternative “storiche” come gzip, bzip2, LZMA ed altre? Cercheremo di capirlo chiamando in causa alcuni tester illustri.
Brotli: le osservazioni di Cloudflare (ottobre 2015)
Come anticipato in apertura anche il noto vendor Cloudflare è uno dei supporter ufficiali di Brotli. Nell’ottobre del 2015, a meno di un mese dal lancio, il blog ufficiale dell’azienda pubblicava alcuni test dedicati sempre all’allora nuovo algoritmo. Riportiamo qui di seguito le conclusioni delle prove:
“[l’attuale situazione di Brotli ci lascia con impressioni contrastanti. Non c’è una chiara risposta alla domanda «Brotli è migliore di gzip?». L’algoritmo sembra in definitiva ideale per la compressione di contenuti statici ma sul web, dove i contenuti sono dinamici, bisogna anche considerare la compressione in tempo reale (on-the-fly).
Per come la vedo io, con file di grandi dimensioni (superiori a 64KB) e connessione lente Brotli ha già un buon vantaggio su zlib. Si tratta tuttavia di file che rappresentano solo il 20% del data set impiegato […]. E’ importante ricordare che zlib si avvantaggia di diversi anni di ottimizzazione e lavoro da parte dell’intera community web, mentre Brotli è supervisionato da un abile ma piccolo team di persone. Non c’è alcun dubbio che l’attuale implementazione di Brotli sia destinata a migliorare nel tempo]”.
Brotli: le osservazioni di Sam Saffron (giugno 2016)
Otto mesi dopo Sam Saffron, co-founder di Discourse.com, ha colto l’occasione per testare l’efficacia o meno dell’algoritmo. Del resto si parlava incessantemente di “Brotli” (un nome che era quasi sulla bocca di tutti, dai portali specializzati fino ad Akamai) e dei presunti vantaggi (rusa superiore anche del 25% rispetto alla concorrenza), una situazione che potevano solo attirare l’attenzione di un addetto ai lavori. Vediamo i risultati di alcune delle prove su strada.
Nella test 1 Brotli si confronta con vari scenari. I valori mostrati nella tabella 2 si riferiscono alla percentuale di spazio guadagnata o persa (valore preceduto dal segno meno) rispetto all’algoritmo gzip_9 (livello di compressione 9).
In base a quanto riscontrato, Sam afferma che:
- il livello di compressione 5 dell’algoritmo Google riesce ad ottenere un miglior risultato del livello 9 di gzip (15% di differenza circa);
- il risultato peggiore consegna comunque a Brotli una riduzione delle dimensioni pari al 9% (jquery 2.2.4). Quello migliore il 29% circa (applicazione Discourse);
- Brotli lavora meglio con file di grandi dimensioni.
Test 2: livelli di compressione
Gli algoritmi offrono vari livelli di compressione (zopfli ne ha 15, Brotli e gzip 11 etc.). In questa seconda prova su strada Sam ha scelto per Brotli di partire dal livello 5 in quanto è da quest’ultimo che entrano in gioco avanzate tecniche di compressione come il context modelling.
La seconda sessione di test restituisce risultati contrastanti:
- il livello di compressione 11 non è adatto ai contenuti dinamici;
- Brotli_5 è invece più competitivo e riesce a processore file di grandezza inferiore persino a gzip_9.