Boas práticas de performance para nsites
Um nsite é carregado arquivo por arquivo. Cada HTML, CSS, JS ou imagem é buscado como um blob separado no servidor Blossom, então cada arquivo a mais e cada byte desnecessário aparece diretamente no tempo de carregamento para o visitante.
1. Reduza o que será baixado
Esta é a prática de maior impacto: menos bytes e menos arquivos significam carregamento mais rápido.
- Minifique e agrupe CSS e JS. Menos arquivos pequenos evitam múltiplas buscas de blobs.
- Otimize imagens. Use WebP ou AVIF, dimensione a imagem para a resolução de exibição e comprima antes do deploy.
- Use fontes enxutas. Prefira fontes do sistema ou subconjuntos com apenas os caracteres necessários, e poucas variações de peso.
- Publique só o necessário. Não envie node_modules, mapas de código-fonte nem arquivos de teste.
- Ative compressão no build sempre que sua ferramenta de build suportar.
Menos arquivos
Cada blob extra é uma requisição extra. Agrupar reduz a latência acumulada.
Imagens dimensionadas
Uma foto de 4000 px exibida em 400 px desperdiça banda à toa.
Fontes enxutas
Um subconjunto de 20 KB carrega mais rápido que uma família completa de 300 KB.
2. Otimize o deploy
Publicar com eficiência economiza tempo e evita reenviar blobs que já estão no servidor.
- Use o diff padrão do nsyte e evite --force: apenas arquivos alterados são enviados.
- Ajuste a concorrência com
--concurrency(padrão 4) conforme a capacidade da sua conexão. - Use
--syncperiodicamente para garantir que o evento reflita exatamente o que está publicado. - Teste antes com
--dry-runpara ver o que seria enviado sem tocar em nada.
npm run build
nsyte deploy ./dist --concurrency 8
Dica: teste primeiro com nsyte deploy ./dist --dry-run.
3. Disponibilidade e caminho rápido
Redundância evita falhas e ajuda o gateway a encontrar um caminho mais curto até o visitante.
- Use mais de um servidor Blossom e mais de um relay.
- Use
--use-fallbacksapenas se os servidores principais estiverem instáveis, pois adiciona tentativas extras. - Quando houver opção, escolha um servidor próximo ao seu público.
4. Cache
Gateways guardam informações por um tempo para responder mais rápido. Aproveite isso.
- Gateways cacheiam DNS, dicas de servidor e perfis, com TTL padrão de 3600 s.
- Em produção, coloque um cache (nginx ou Cloudflare) na frente do proxy do seu site.
- Nomeie arquivos com hash no conteúdo (ex.:
app.3f9a2c.js) para permitir cache agressivo com segurança: quando o conteúdo muda, o nome muda.
5. Sites com roteamento (SPA)
Aplicações de página única precisam responder rotas internas com o mesmo HTML principal.
Use --fallback=/index.html no deploy para que rotas internas não retornem 404.
nsyte deploy ./dist --fallback=/index.html
6. Medir antes de otimizar
Meça primeiro para descobrir o gargalo real, em vez de otimizar no escuro.
Lighthouse
Rode auditorias de desempenho e siga as recomendações de maior impacto.
Aba Network
No DevTools, veja quantos arquivos são buscados, seus tamanhos e o tempo de cada um.
Ferramentas do nsyte
nsyte status mostra cobertura de relays e servidores. nsyte debug <npub> ajuda no diagnóstico.
7. Tabela-resumo
Priorize pela coluna de prioridade e comece pelas ações de impacto alto.
| Prioridade | Ação | Ganho esperado |
|---|---|---|
| Alta | Menos arquivos e compressão | Menos requisições e menos bytes baixados |
| Alta | Deploy incremental com concorrência ajustada | Publicações rápidas e sem reenvios |
| Média | Dois ou mais servidores Blossom e relays | Maior disponibilidade e melhor caminho |
| Média | Cache no gateway ou proxy | Respostas repetidas mais rápidas |
| Baixa | Fontes e fallbacks específicos | Ajustes finos de carregamento |
Quiz rápido (opcional)
Três perguntas para fixar as práticas. Escolha uma alternativa em cada uma.