nginx: 해시 기반 정적 자산에 immutable 캐시 적용
Astro/Next 등 빌드 산출물(해시 파일명)에 긴 캐시 + immutable을 적용하는 실무 패턴
main.abc123.js처럼 파일명에 해시가 포함된 자산은 내용이 바뀌면 파일명이 바뀌므로, 브라우저에 오래 캐시해도 안전합니다.
관련 용어: Cache-Control, ETag
Astro(예: /_astro/) 패턴
location ^~ /_astro/ {
try_files $uri =404;
expires 365d;
add_header Cache-Control "public, max-age=31536000, immutable";
}
주의: HTML에는 적용하지 않기
HTML은 “콘텐츠/링크”가 바뀌면 파일명이 바뀌지 않기 때문에, 보통은 짧게 캐시하거나 아예 캐시를 막습니다.
location = /index.html {
expires -1;
add_header Cache-Control "no-cache";
}
체크리스트
- 해시 자산 경로만 대상으로 제한(전체
/에 걸지 않기) try_files $uri =404;로 의도치 않은 fallback 방지- CDN을 쓰면 CDN 캐시 정책도 함께 점검