Developer Toolbox

gzip (DEFLATE)

Pozrite sa, ako gzip zmenšuje text: opakovania sa menia na krátke kópie a Huffmanove kódy dávajú častým symbolom menej bitov.

  • Okno: 32 KB
  • Kópie: 3-258 bajtov
  • Kódy: až 15 bitov
  • Rámec gzip: 18 bajtov
Čo to znamená?
  • Literál: znak zapísaný sám za seba, pretože na jeho pozícii nezačína žiadne opakovanie 3 a viac znakov.
  • Kópia: dĺžka a vzdialenosť s významom „vezmi toľko znakov z toľkých pozícií späť“. Môže sa prekrývať s textom, ktorý vytvára.
  • Okno: ako ďaleko späť smie kompresor hľadať opakovanie. V gzip 32 KB, v Brotli až 16 MB.
  • Huffmanov kód: bitový kód pre každý symbol, kratší pre časté symboly, zostavený zo stromu, ktorý znova a znova spája dva najzriedkavejšie symboly.
  • Prefixový kód: žiadny kód nie je začiatkom iného, takže prúd kódov sa dá prečítať späť bez oddeľovačov.
LZ77 a Huffman krok za krokom 0 / 19 krokov

Počet znakov textu: 23, bez kompresie 184 b. Kompresor ho číta zľava doprava a na každej pozícii sa pýta, či sa to, čo nasleduje, už objavilo skôr.

Medzerník: prehrať alebo pozastaviť. Šípky vľavo/vpravo: krok. Home a End: preskočiť.

Skúste: Napíšte mnohokrát to isté písmeno. Všetky pokryje jediná kópia so vzdialenosťou 1, pretože kópia sa smie prekrývať s textom, ktorý sama vytvára.

Ako to funguje

gzip spúšťa DEFLATE v dvoch fázach. LZ77 prechádza text a na každej pozícii hľadá najdlhší úsek bajtov, ktorý sa už objavil v posledných 32 KB; namiesto opakovania zapíše dvojicu: koľko bajtov skopírovať (3-258) a ako ďaleko späť ležia. Čo zostane, teda literály a tieto dvojice, sa potom zapíše Huffmanovými kódmi, kde časté symboly dostanú krátke kódy a zriedkavé dlhé. gzip výsledok zabalí do 10-bajtovej hlavičky a 8-bajtového zakončenia s kontrolným súčtom CRC-32.

Kedy sa hodí

gzip komprimuje text, ktorý sa opakuje: HTML, CSS, JavaScript, JSON, logy, CSV. Rozumie mu každý prehliadač aj server, je rýchly na všetkých úrovniach a je bezpečnou predvolenou voľbou na kompresiu odpovedí za behu. Dáta, ktoré už sú komprimované, napríklad JPEG, PNG, WOFF2 alebo ZIP, žiadne opakovania neobsahujú, takže gzip len pridá svoj rámec.

Na vlastnom texte

Rovnaké dve fázy, ktoré na dlhšom texte vykoná skutočný gzip (úroveň 6). Vložte vlastný text, alebo si ho preneste z nástroja Kompresia gzip a Brotli.

Vstup