Gzip vs Brotli - Ce metodă de compresie ar trebui să utilizați și de ce

Publicat: 2018-03-02

Gzip a devenit standardul de aur pentru comprimarea fișierelor la începutul anilor 1990, dar dacă încă îl utilizați în 2018, atunci vă recomandăm să treceți la o metodă de compresie mai nouă.

Deși Gzip își are încă locul în inimile multora, dezvoltatorii web apelează din ce în ce mai mult la opțiuni superioare, cum ar fi algoritmul de compresie Brotli de la Google.

O scurtă istorie a comprimării fișierelor

„G” din Gzip este prescurtarea pentru GNU. GNU este un sistem de operare open source, bazat pe Unix, care a fost dezvoltat în anii 1980. Până atunci, Unisys și IBM își patentaseră deja propriii algoritmi pentru comprimarea și decomprimarea fișierelor, ceea ce permitea mașinilor lor să stocheze mai multe date. Prin urmare, programatorii Jean-loup Gailly și Mark Adler au creat Gzip ca alternativă gratuită pentru utilizatorii GNU.

Noul Gzip nu a fost doar o imitație ieftină; a fost de fapt mai rapid decât concurenții săi cu drepturi de autor. Drept urmare, oamenii încă îl folosesc pentru comprimarea fișierelor până în prezent. Deși este ușor să rămâneți cu ceea ce vă simțiți confortabil, există diverși algoritmi de compresie care oferă în prezent rezultate de compresie mai bune decât Gzip. Acolo intervine Brotli.

Ce este Brotli?

Brotli este o specificație mai nouă a formatului de date care profită de mai mulți algoritmi pentru a condensa datele mai eficient decât Gzip. În 2015, specificația Brotli a fost generalizată pentru compresia fluxului HTTP cu tipul de codificare de conținut „br”.

Brotli Content Encoding

Dezvoltat de Jyrki Alakuijala și Zoltan Szabadka, Brotli folosește aceiași algoritmi de compresie ca și Gzip, dar este susținut și de un dicționar de cuvinte și expresii utilizate frecvent pentru a oferi un raport de compresie mai bun.

Rețineți că Gzip și Brotli ar trebui folosite numai pentru a comprima fișiere text. Fișierele binare precum JPEG și MP4 se bazează pe propriii algoritmi de compresie specifici formatului. Dacă încercați să comprimați un JPEG cu Brotli, fișierul rezultat va fi de fapt mai mare decât originalul.

Deși nu a fost întotdeauna așa, Brotli este acum acceptat de toate browserele majore.

Brotli Support

În cazul în care un browser care nu acceptă Brotli solicită un activ de la un site care livrează fișiere comprimate Brotli, serverul va reveni la Gzip și va livra activele codificate pe care le acceptă browserul - dat fiind că serverul este configurat corect.

Ce îl face pe Brotli mai bun?

Conform cercetărilor efectuate de CertSimple:

  • Pachetele JavaScript comprimate cu Brotli sunt cu 14% mai mici decât pachetele Javascript comprimate cu Gzip.
  • Fișierele HTML comprimate de Broti sunt cu 21 la sută mai mici decât echivalentele lor Gzip.
  • Fișierele CSS comprimate de Brotli sunt cu 17% mai mici decât cele comprimate de Gzip.

Deoarece majoritatea site-urilor web se bazează pe toate aceste trei tipuri de active, aceasta este o diferență considerabilă în ceea ce privește dimensiunile activelor în comparație cu Gzip. Aceste economii, la rândul lor, vor aduce o îmbunătățire vizibilă a performanței aplicației dvs.

Gzip vs Brotli: Profitați la maximum de Brotli

În ciuda a ceea ce poate ați auzit, comprimarea activelor cu Brotli nu este mai lentă decât Gzip. Acestea fiind spuse, Gzip și Brotli oferă niveluri variabile de compresie, iar setările implicite ale lui Brotli pot duce la o compresie mai lentă decât setările implicite ale Gzip. Va trebui să faceți unele ajustări la Brotli pentru a găsi un echilibru acceptabil între dimensiunea fișierului și viteza de compresie.

Setarea ideală de compresie depinde de ce și când comprimați. Un bun punct de plecare este Brotli 4 pentru o comprimare mai rapidă a conținutului dinamic. Pe de altă parte, elementele statice pot fi comprimate mai dens în prealabil, fără a sacrifica viteza, astfel încât setarea implicită „11” este mai potrivită pentru un astfel de conținut.

Instalarea Brotli pe serverul dvs. web

Adăugarea suportului pentru Brotli oferă câștiguri semnificative pentru un efort minim. În funcție de software-ul de server web pe care îl utilizați, va determina ce metodă de integrare va trebui să utilizați pentru a integra Brotli. Următoarele prezintă câteva opțiuni disponibile:

  • Nginx are o extensie Brotli oferită de Google.
  • Apache oferă o extensie dedicată Brotli.
  • Microsoft IIS nu oferă nici un suport oficial Brotli, totuși există un modul comunitar care adaugă suport.
  • Node.js este similar cu Microsoft prin faptul că nu există suport oficial, dar există un modul comunitar.

Pentru a demonstra un exemplu de instalare rapidă, să presupunem că rulați Nginx. În acest caz, puteți instala modulul ngx_brotli cu următoarele:

cd nginx-1.x.x
$ ./configure --add-module=/path/to/ngx_brotli
$ make && make install

Apoi, adăugați următoarele la blocul HTTPS (Brotli rulează numai peste HTTPS):

brotli on;
brotli_static on;
brotli_comp_level 4;
brotli_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;

Puteți modifica directivele de mai sus după cum credeți de cuviință.

În cele din urmă, introduceți următoarele pentru a reporni NGINX și pentru a începe să culegeți beneficiile:

sudo systemctl restart nginx
Utilizarea Brotli cu active pre-comprimate

Brotli este excelent pentru livrarea activelor precomprimate mult mai rapid decât Gzip. Acest lucru se datorează faptului că le puteți comprima la cel mai înalt nivel al lui Brotli (11) și apoi le puteți ridica de la serverul de origine ori de câte ori este solicitat.

Acest tip de configurare funcționează excelent cu Webpack, deoarece un plugin Webpack este disponibil pentru a vă comprima automat elementele statice atât ca Gzip, cât și ca Brotli. Prin urmare, nu este necesară compresia din mers, ceea ce înseamnă că se economisește timpul petrecut altfel comprimarea fișierelor.

Aflați mai multe despre cum să utilizați Webpack pentru a genera active comprimate în Brotli.

CDN-ul dvs. acceptă Brotli?

Pentru a profita pe deplin de beneficiile lui Brotli, aveți nevoie de o rețea de livrare de conținut care să o susțină. KeyCDN, de exemplu, a introdus asistența Brotli anul trecut pentru toți clienții fără costuri suplimentare. Prin urmare, site-ul dvs. nu numai că va beneficia de dimensiuni reduse ale fișierelor datorită compresiei Brotli mai bune, dar vor beneficia și de o latență redusă datorită activelor stocate în cache pe serverele edge mai aproape de vizitatorii dvs.

Această metodă necesită ca serverul de origine să accepte Brotli și ca compresia reală să aibă loc pe partea serverului de origine. Din nou, acest lucru ajută la economisirea de timp și evită nevoia de compresie din mers, care poate afecta performanța.

Gzip vs Brotli: În rezumat

Efortul mic necesar pentru a adăuga Brotli la serverul dvs. web merită economiile substanțiale de dimensiunea fișierului. Deși Brotli poate rula uneori mai lent la cele mai mari setări de compresie, puteți obține cu ușurință un echilibru ideal între viteza de compresie și dimensiunea fișierului prin ajustarea setărilor.

În timp ce utilizarea Brotli poate transforma aplicațiile web rapide în altele mai rapide, nu va face neapărat rapid aplicațiile lente. Deoarece Brotli comprimă doar elementele bazate pe text, va trebui să vă optimizați imaginile prin alte mijloace. Dacă încă nu ați trecut la HTTP/2, acest lucru poate face o diferență enormă în performanța aplicației dvs. Fiecare milisecundă contează, așa că orice acțiune pe care o întreprindeți pentru a vă accelera aplicația vă îmbunătățește șansele de a păstra utilizatorii.