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.

  • 32 KB
  • 3-258 bajtov
  • až 15 bitov
  • rámec gzip 18 bajtov
Ďalšie pojmy na tejto stránke
  • Literál: znak zapísaný sám za seba, pretože na jeho pozícii nezačína žiadne opakovanie 3 a viac znakov.
  • 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