Developer Toolbox

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.
LZ77 e Huffman, passo a passo 0 / 19 passos

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.

Entrada