From de94d0bcd27bd0ffc1dabae7ee3d93ddfb183f8d Mon Sep 17 00:00:00 2001 From: happybell80 Date: Wed, 21 Jan 2026 15:43:28 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20nginx=20SPA=20index.html=20=EC=BA=90?= =?UTF-8?q?=EC=8B=9C=20=EB=B0=A9=EC=A7=80=20=EC=9B=90=EC=B9=99=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 313_프론트_구조_원칙.md: "12. 프론트엔드 캐싱 전략"에 Vite SPA 배포 시 index.html 캐시 방지 필수 명시 --- book/300_architecture/313_프론트_구조_원칙.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/book/300_architecture/313_프론트_구조_원칙.md b/book/300_architecture/313_프론트_구조_원칙.md index aa899b4..ca1cb54 100644 --- a/book/300_architecture/313_프론트_구조_원칙.md +++ b/book/300_architecture/313_프론트_구조_원칙.md @@ -202,11 +202,17 @@ src/ ## 12. 프론트엔드 캐싱 전략 -### 버전 파라미터 필수 +### 버전 파라미터 필수 (수동 빌드 시) - JS/CSS 파일: `?v=YYYYMMDD` 추가 (예: `app.js?v=20251204`) - 배포 후 버전 번호 업데이트 필수 -### nginx 캐시 제어 +### nginx SPA index.html 캐시 방지 (Vite 빌드 시 필수) +- Vite는 JS/CSS에 해시 파일명 자동 생성 (예: `index-D3r66P5F.js`) +- **index.html만 캐시 방지 필수**: `Cache-Control: no-store, no-cache, must-revalidate` +- index.html이 캐시되면 이전 해시 파일명 참조 → 배포 후 변경사항 미반영 +- nginx 설정 예시: `location = /goosefarm/index.html` 블록에 `add_header Cache-Control` 추가 + +### nginx 캐시 제어 (일반) - ETag 사용 시 Ctrl+F5로도 캐시 회피 어려움 - 버전 파라미터가 가장 확실한 방법