diff --git a/nginx/snippets/cache_static_assets.conf b/nginx/snippets/cache_static_assets.conf index 1295744..1e26146 100644 --- a/nginx/snippets/cache_static_assets.conf +++ b/nginx/snippets/cache_static_assets.conf @@ -1,13 +1,30 @@ -# /etc/nginx/snippets/cache_static_assets.conf +# /etc/nginx/snippets/cache_aggressive_static.conf # -# Configuração de cache agressivo para ficheiros estáticos (CSS, JS, imagens, etc.). +# Snippet de cache agressivo para ficheiros estáticos que raramente mudam. +# AVISO: Só use isto se os seus ficheiros tiverem nomes únicos a cada deploy (técnica de "cache busting"). -# Ativa o cache para esta localização. +# --- Configuração do Cache do Nginx --- + +# Ativa o cache para esta localização, usando a zona de cache 'static_cache'. +# Garanta que esta zona está definida no seu /etc/nginx/nginx.conf. +proxy_cache static_cache; +# Define que as respostas válidas ficam no cache do Nginx por 30 dias. +proxy_cache_valid 200 301 302 30d; +# Cacheia erros de "Não Encontrado" por um período curto. +proxy_cache_valid 404 1m; +# Em caso de erro no backend, serve uma versão antiga do cache em vez de mostrar um erro. +proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; +# Ativa explicitamente o cache para esta localização. proxy_no_cache 0; proxy_cache_bypass 0; +# Otimização que impede que múltiplas requisições para o mesmo recurso em falta atinjam o backend. +proxy_cache_lock on; -# Define que as respostas válidas (código 200) ficam no cache por 60 minutos. -proxy_cache_valid 200 60m; +# --- Configuração do Cache do Cliente (Navegador) --- -# Instrui o NAVEGADOR do cliente a guardar uma cópia por 7 dias. -expires 7d; +# Instrui o NAVEGADOR do cliente a guardar uma cópia por 30 dias e a nunca a revalidar. +# 'immutable' é uma otimização de performance poderosa. +add_header Cache-Control "public, immutable, max-age=2592000"; + +# Adiciona um cabeçalho de depuração para vermos o status do cache (HIT/MISS/BYPASS). +add_header X-Cache-Status $upstream_cache_status;