gzip (DEFLATE)
Veja como o gzip encolhe o texto: as repetições viram cópias curtas, e os códigos de Huffman dão menos bits aos símbolos frequentes.
- Janela: 32 KB
- Cópias: 3-258 bytes
- Códigos: até 15 bits
- Enquadramento gzip: 18 bytes
O que significam esses termos?
- Literal: um caractere escrito como está, porque na sua posição não começa nenhuma repetição de 3 ou mais caracteres.
- Cópia: um comprimento e uma distância que significam "pegue tantos caracteres de tantas posições atrás". Pode se sobrepor ao texto que ela mesma produz.
- Janela: até onde o compressor pode olhar para trás em busca de uma repetição. 32 KB no gzip, até 16 MB no Brotli.
- Código de Huffman: um código de bits para cada símbolo, mais curto para os símbolos frequentes, construído a partir de uma árvore que junta repetidamente os dois símbolos mais raros.
- Livre de prefixo: nenhum código é o início de outro, então uma sequência de códigos pode ser lida sem separadores.
O texto tem 23 caracteres, 184 bits sem compressão. O compressor o lê da esquerda para a direita e, em cada posição, pergunta se o que vem a seguir já apareceu antes.
Espaço: reproduzir ou pausar. Setas esquerda e direita: avançar passo a passo. Home e End: pular.
Experimente: Digite a mesma letra muitas vezes. Uma única cópia com distância 1 cobre todas elas, porque uma cópia pode se sobrepor ao texto que ela mesma vai produzindo.
Como funciona
O gzip aplica o DEFLATE em duas etapas. O LZ77 percorre o texto e, em cada posição, procura a sequência de bytes mais longa que já apareceu nos últimos 32 KB; em vez de repeti-los, escreve um par: quantos bytes copiar (3-258) e a que distância para trás eles estão. O que sobra, os literais e esses pares, é então escrito com códigos de Huffman, em que os símbolos frequentes ganham códigos curtos e os raros, códigos longos. O gzip envolve o resultado em um cabeçalho de 10 bytes e um rodapé de 8 bytes com uma soma de verificação CRC-32.
Quando é uma boa escolha
O gzip comprime texto que se repete: HTML, CSS, JavaScript, JSON, logs, CSV. Todo navegador e todo servidor o entendem, ele é rápido em qualquer nível e é a escolha segura para comprimir respostas em tempo real. Dados já comprimidos, como JPEG, PNG, WOFF2 ou ZIP, não têm mais repetições, então o gzip só acrescenta o seu enquadramento.
No seu próprio texto
As mesmas duas etapas, feitas pelo gzip real (nível 6) em um texto mais longo. Cole o seu ou traga um da ferramenta Compressão gzip e Brotli.