gzip (DEFLATE)
Vezi cum micșorează gzip un text: repetițiile devin copii scurte, iar codurile Huffman dau simbolurilor frecvente mai puțini biți.
- Fereastră: 32 KB
- Copii: 3-258 octeți
- Coduri: până la 15 biți
- Încadrare gzip: 18 octeți
Ce înseamnă acești termeni?
- Literal: un caracter scris ca atare, pentru că la poziția lui nu începe nicio repetiție de 3 sau mai multe caractere.
- Copie: o lungime și o distanță care înseamnă „ia atâtea caractere de la atâtea poziții în urmă”. Se poate suprapune cu textul pe care îl produce.
- Fereastră: cât de departe în urmă poate căuta compresorul o repetiție. 32 KB la gzip, până la 16 MB la Brotli.
- Cod Huffman: un șir de biți pentru fiecare simbol, mai scurt pentru simbolurile frecvente, construit dintr-un arbore care unește iar și iar cele mai rare două simboluri.
- Fără prefix: niciun cod nu este începutul altuia, așa că un șir de coduri poate fi citit înapoi fără separatori.
Caractere în text: 23, biți fără compresie: 184. Compresorul îl citește de la stânga la dreapta și se întreabă la fiecare poziție dacă ce urmează a mai apărut înainte.
Space: redă sau pauză. Săgețile stânga și dreapta: pas cu pas. Home și End: salt.
Încearcă: Scrie aceeași literă de multe ori. O singură copie cu distanța 1 le acoperă pe toate, pentru că o copie se poate suprapune cu textul pe care îl produce.
Cum funcționează
gzip rulează DEFLATE în două etape. LZ77 parcurge textul și, la fiecare poziție, caută cea mai lungă secvență de octeți care a apărut deja în ultimii 32 KB; în loc să o repete, scrie o pereche: câți octeți trebuie copiați (3-258) și cât de departe în urmă se află. Tot ce rămâne, literalii și acele perechi, este apoi scris cu coduri Huffman, în care simbolurile frecvente primesc coduri scurte, iar cele rare coduri lungi. gzip împachetează rezultatul într-un antet de 10 octeți și un final de 8 octeți cu o sumă de control CRC-32.
Când este o alegere bună
gzip comprimă textul care se repetă: HTML, CSS, JavaScript, JSON, loguri, CSV. Orice browser și orice server îl înțelege, e rapid la orice nivel și e alegerea sigură implicită pentru comprimarea răspunsurilor din mers. Datele deja comprimate, cum ar fi JPEG, PNG, WOFF2 sau ZIP, nu mai au repetiții, așa că gzip doar își adaugă încadrarea.
Pe textul tău
Aceleași două etape, făcute de gzip-ul real (nivelul 6) pe un text mai lung. Lipește-l pe al tău sau adu unul din instrumentul Compresie gzip și Brotli.