1. Quando cache ajuda
Cache no Nginx reduz hits no app para assets estáticos e, com cuidado, para HTML semi-estático. Não use cache cego em páginas autenticadas ou com dados por usuário.
2. Headers de cache
Cache-Control: public, max-age=31536000, immutable # assets com hash no nome
Cache-Control: no-store # dados sensíveis
Cache-Control: private, max-age=60 # HTML por usuário, curto
3. proxy_cache no Nginx
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=app:20m max_size=1g inactive=60m;
server {
location / {
proxy_pass http://127.0.0.1:3000;
proxy_cache app;
proxy_cache_valid 200 1m;
proxy_cache_use_stale error timeout updating;
add_header X-Cache-Status $upstream_cache_status;
}
}
ATENÇÃO Defina
proxy_cache_bypass para cookies de sessão se o conteúdo for privado.4. Compressão
gzip on;
gzip_types text/css application/javascript application/json image/svg+xml;
gzip_min_length 1024;
Prefira Brotli se o módulo estiver disponível; para a maioria dos sites, gzip bem configurado já entrega ganho claro.
5. Checklist
- Assets versionados com hash no filename
- HTML autenticado sem cache compartilhado
- Header
X-Cache-Statuspara debug - Monitorar hit ratio e tamanho de
/var/cache/nginx