gzip (DEFLATE)
Se hur gzip krymper text: upprepningar blir korta kopior, och Huffmankoder ger vanliga symboler färre bitar.
- 32 KB
- 3-258 byte
- upp till 15 bitar
- gzip-ram 18 byte
Fönster: hur långt bakåt komprimeraren får leta efter en upprepning. 32 KB i gzip, upp till 16 MB i Brotli.
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.
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.
Fler begrepp på sidan
- Literal: ett tecken som skrivs som sig självt, eftersom ingen upprepning på 3 eller fler tecken börjar vid dess position.
- Prefixfri: ingen kod är början på en annan, så en ström av koder kan läsas tillbaka utan avgränsare.
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.