Compression em JavaScript (Node.js): guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Compression em JavaScript (Node.js): guia completo com exemplos

1. O que é e para que serve

A biblioteca compression para Node.js é um middleware para o framework Express (e outros frameworks compatíveis) que comprime automaticamente as respostas HTTP do servidor usando os algoritmos Gzip, Deflate ou Brotli. Ela é o padrão de facto para otimizar a performance de aplicações web em Node.js, pois reduz significativamente o tamanho dos dados transferidos (HTML, CSS, JavaScript, JSON, imagens, etc.) entre o servidor e o cliente.

Por que isso é importante? Na web moderna, a velocidade de carregamento das páginas é crucial para a experiência do usuário e para o SEO. A compressão de dados permite reduzir o volume de tráfego de 3 a 10 vezes (dependendo do tipo de conteúdo). Por exemplo, um arquivo HTML de 100 KB após a compressão Gzip pode pesar apenas 10–15 KB. Isso é especialmente relevante para usuários móveis com tráfego limitado e para APIs que retornam grandes objetos JSON. Sem usar a compression, o servidor enviará dados "brutos", aumentando o tempo de carregamento e a carga na rede.

A biblioteca automatiza completamente o processo: ela verifica o cabeçalho Accept-Encoding na requisição do cliente, seleciona o algoritmo de compressão adequado (geralmente gzip ou brotli, se suportado), comprime a resposta e adiciona os cabeçalhos correspondentes (Content-Encoding, Vary). O desenvolvedor só precisa conectar o middleware na cadeia de processamento de requisições do Express. Isso torna a compression uma ferramenta indispensável para qualquer aplicação em produção no Node.js.

2. Instalação

A biblioteca é instalada via npm (Node Package Manager). Certifique-se de ter o Node.js instalado (versão 12 ou superior). Execute o comando na raiz do seu projeto:

npm install compression

Se você usa yarn:

yarn add compression

Após a instalação, a biblioteca estará disponível para importação no seu código.

3. Início rápido — exemplo mínimo funcional

A maneira mais simples de começar a usar a compression é conectá-la como middleware no Express. Abaixo está um servidor mínimo que comprime todas as respostas:

const express = require('express');
const compression = require('compression');
const app = express();
const port = 3000;

// Conecta o middleware de compressão
app.use(compression());

// Rota comum
app.get('/', (req, res) => {
  // Envia uma resposta grande (repete a string 1000 vezes)
  const bigData = 'Hello, World! '.repeat(1000);
  res.send(bigData);
});

app.listen(port, () => {
  console.log(`Servidor rodando em http://localhost:${port}`);
});

Após iniciar (node app.js), abra o navegador em http://localhost:3000. Nas ferramentas do desenvolvedor (aba Network), você verá que a resposta está comprimida (cabeçalho Content-Encoding: gzip). O tamanho da resposta será várias vezes menor que o original.

4. Principais métodos/funções/classes

A biblioteca compression fornece uma função principal — o middleware, que é configurado através de um objeto de opções. Vejamos 8 aspectos-chave para trabalhar com ela.

4.1. compression([options]) — criando o middleware

Assinatura: compression(options?: CompressionOptions): RequestHandler

O que faz: Cria e retorna uma função middleware para o Express. Aceita um objeto opcional com configurações.

Exemplo:

const compression = require('compression');
const app = require('express')();

// Sem opções (comportamento padrão)
app.use(compression());

// Com opções
app.use(compression({
  level: 6,          // Nível de compressão (0-9)
  threshold: 1024,   // Não comprimir respostas menores que 1 KB
  filter: (req, res) => {
    // Lógica de filtro personalizada                    

Recommendations