Developer Toolbox

gzip (DEFLATE)

Se hur gzip krymper text: upprepningar blir korta kopior, och Huffmankoder ger vanliga symboler färre bitar.

  • Fönster: 32 KB
  • Kopior: 3-258 byte
  • Koder: upp till 15 bitar
  • gzip-ram: 18 byte
Vad betyder det här?
  • Literal: ett tecken som skrivs som sig självt, eftersom ingen upprepning på 3 eller fler tecken börjar vid dess position.
  • Kopia: en längd och ett avstånd som betyder "ta så här många tecken från så här långt bakåt". Den får överlappa den text den skapar.
  • Fönster: hur långt bakåt komprimeraren får leta efter en upprepning. 32 KB i gzip, upp till 16 MB i Brotli.
  • Huffmankod: en bitkod för varje symbol, kortare för vanliga symboler, byggd från ett träd som om och om igen slår ihop de två ovanligaste symbolerna.
  • Prefixfri: ingen kod är början på en annan, så en ström av koder kan läsas tillbaka utan avgränsare.
LZ77 och Huffman, steg för steg 0 / 19 steg

Texten har 23 tecken, 184 bitar okomprimerat. Komprimeraren läser den från vänster till höger och frågar vid varje position om det som kommer härnäst har förekommit tidigare.

Blanksteg: spela upp eller pausa. Vänster och höger pil: steg. Home och End: hoppa.

Prova det här: Skriv samma bokstav många gånger. En enda kopia med avstånd 1 täcker alla, eftersom en kopia får överlappa den text den själv skapar.

Så fungerar det

gzip kör DEFLATE i två steg. LZ77 går igenom texten och letar vid varje position efter den längsta följden av byte som redan förekommit inom de senaste 32 KB. I stället för att upprepa dem skriver den ett par: hur många byte som ska kopieras (3-258) och hur långt bakåt de ligger. Det som blir kvar, literalerna och paren, skrivs sedan med Huffmankoder, där vanliga symboler får korta koder och ovanliga långa. gzip lägger resultatet i ett huvud på 10 byte och ett avslut på 8 byte med en CRC-32-kontrollsumma.

När det är ett bra val

gzip komprimerar text som upprepar sig: HTML, CSS, JavaScript, JSON, loggar, CSV. Alla webbläsare och servrar förstår det, det är snabbt på alla nivåer och det säkra standardvalet för att komprimera svar i farten. Data som redan är komprimerad, som JPEG, PNG, WOFF2 eller ZIP, har inga upprepningar kvar, så där lägger gzip bara till sin ram.

På din egen text

Samma två steg, utförda av riktig gzip (nivå 6) på en längre text. Klistra in din egen eller ta med en från verktyget Gzip- & Brotli-komprimering.

Indata