Patu

Otimize seus assets no build, não a cada requisição

A maioria dos assets de um site é conhecida muito antes de um único visitante aparecer. A imagem principal, os ícones, o CSS empacotado, as fontes: eles vivem no seu repositório e são idênticos de uma requisição para a seguinte. Só há dois lugares para otimizá-los. Uma vez, quando você faz o build. Ou repetidamente, na edge, toda vez que uma página carrega.

Para os assets que você mesmo entrega, o build é o melhor lugar.

Por que no build

Você faz o trabalho uma vez. A saída é pequena no momento em que é entregue e continua pequena, sem CPU por requisição, sem cache de transformação para aquecer, e sem uma conta de transformação em tempo real que cresce com o seu tráfego.

O resultado também é algo que você pode ver. Os arquivos otimizados estão ali mesmo, na saída do seu build, então você pode compará-los, pesá-los e saber exatamente o que está saindo. Uma transformação na edge é uma caixa-preta em que você confia; um artefato de build é um arquivo que você pode abrir.

E cobre mais do que imagens. Seu build já cuida de JavaScript, CSS, SVG e fontes, e todos eles também encolhem. Um TTF bruto entregue no lugar de WOFF2 são cerca de dois terços desperdiçados por si só.

Onde a edge ainda merece seu lugar

A otimização no build só toca os assets que passam pelo seu build. Dois casos realmente precisam do caminho da requisição:

Para um site normal, que é a maioria dos sites, nenhum desses é o gargalo, e o build é mais simples e mais barato.

Fazendo isso

Duas maneiras, ambas rodando sobre a API do Patu para que a codificação aconteça fora da sua máquina.

Um comando, em qualquer script de build ou tarefa de CI:

PATU_KEY=your_key npx @patu.dev/cli ./dist

Ele percorre a pasta, otimiza as imagens, o SVG, o JS, o CSS e as fontes no lugar, e pula tudo o que não consegue realmente superar. Adicione --cdn para enviá-los e reescrever as referências para cdn.patu.dev em vez de gravar de volta no disco.

Ou integre-o ao Vite, para que cada build seja coberto sem você pensar nisso:

import patu from '@patu.dev/vite'
export default { plugins: [patu()] }

O ponto

A edge não está errada. Mas há uma boa chance de você estar pagando para transformar, em cada requisição, assets que nunca mudam entre elas. Otimize-os uma vez, no build que você já executa, e entregue-os pequenos. A página de integrações tem o CLI, o plugin do Vite e o resto.