gzip (DEFLATE)
Veja como o gzip encolhe o texto: as repetições tornam-se 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 estes termos?
- Literal: um carácter escrito tal 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 "tira tantos caracteres de tão atrás". Pode sobrepor-se ao texto que vai produzindo.
- Janela: até onde o compressor pode olhar para trás à procura 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 prefixos: nenhum código é o início de outro, por isso uma sequência de códigos pode ser lida sem separadores.
O texto tem 23 caracteres, 184 bits sem compressão. O compressor lê-o 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: saltar.
Experimente: Escreva a mesma letra muitas vezes. Uma única cópia com distância 1 cobre-as todas, porque uma cópia pode sobrepor-se ao texto que 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 os repetir, escreve um par: quantos bytes copiar (3-258) e a que distância para trás estão. O que sobra, os literais e esses pares, é depois escrito com códigos de Huffman, em que os símbolos frequentes recebem códigos curtos e os raros, códigos longos. O gzip envolve o resultado num cabeçalho de 10 bytes e num 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. Todos os navegadores e servidores o entendem, é 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, já não têm repetições, por isso o gzip só lhes acrescenta o seu enquadramento.
No seu próprio texto
As mesmas duas etapas, feitas pelo gzip real (nível 6) num texto mais longo. Cole o seu ou traga um da ferramenta Compressão gzip e Brotli.