Next.js/SEO/Lesson 15
Revalidation 전략 — revalidatePath · revalidateTag · time-based
30분·theory
이 챕터
2/2
TypeScript
Revalidation 전략 — revalidatePath · revalidateTag · time-based
💡 왜 배워야 할까요? — '새 글 썼는데 안 보임' 버그 1등 원인
🎯
Next.js 의 fetch 는 기본 캐시. mutation 후 무효화 안 하면 사용자는 옛 데이터를 봅니다.
💼
4가지 도구 — `revalidatePath`·`revalidateTag`·`revalidate: N`·`cache: 'no-store'` 의 사용처가 다름.
⚡
잘못 쓰면 캐시 효과 0 (every request SSR) 또는 데이터 stale (영구 캐시) 양극단.
🔗
Server Action·웹훅·관리자 페이지 — mutation 흐름에서 정확한 무효화 시점이 핵심.
📈
**한 줄 규칙**: 데이터 fetch 에 `tags` 붙이고, mutation Server Action 끝에 `revalidateTag(...)` — 이게 90% 답.
🏢 실무에서는
블로그 글 작성 → 목록 페이지 + 상세 페이지 모두 무효화. 댓글 추가 → 댓글 섹션만 무효화. 관리자가 product 가격 수정 → 그 product 카드 + 검색 결과 + 카테고리 페이지 모두 무효화. 각 시나리오마다 다른 도구.
4 도구 — 사용처 매트릭스
1. 4 도구 정리
2. tags 시스템 — 가장 강력한 패턴
revalidatePath 보다 정확 — 같은 태그를 여러 페이지의 fetch 에 붙여두면 한 번에 다 무효화.
3. 계층적 태그 전략
4. revalidatePath — 경로 단위 무효화
tags 만큼 정확하진 않지만 마이그레이션·임시 처리에 유용.
5. 시간 기반 revalidate (ISR)
mutation 이 없거나 드문 데이터 (블로그·문서·랜딩) 에 적합.
6. 정리 — 의사결정 플로우
💡 💡 Revalidation 실전 5
1. 기본 정책 — fetch 에 tags, mutation 에 revalidateTag
90% 의 경우 이 한 패턴이면 끝.
2. revalidatePath 는 fallback 용
tags 가 어렵거나 빠른 마이그레이션 때만. 정밀도가 낮음.
3. cache: 'no-store' 는 진짜 사용자별 데이터에만
남발하면 모든 페이지가 SSR → 서버 부하 + 느림. 대신 부분만 Client Component 분리.
4. revalidate: N 휴리스틱
5. on-demand 패턴 — 웹훅으로 외부에서 무효화
CMS·외부 시스템이 데이터 바꿀 때 알림 보내서 자동 무효화.
⚡ 직접 실행해보기 — tags 기반 무효화 시뮬레이션
여러 페이지가 다양한 태그로 캐시되어 있을 때 revalidateTag 가 정확히 무엇을 무효화하는지.
✏️ JS 코드
📟 콘솔 출력
▶ 실행 버튼을 눌러보세요
⚠️ 브라우저 샌드박스에서 실행 — console.log()만 지원, alert/fetch 불가
확인 퀴즈
글 상세 페이지의 댓글 섹션 fetch 만 무효화하고 싶을 때 가장 정확한 도구는?
먼저 읽으면 좋은 개념: Metadata API — generateMetadata + OG/Twitter
다음 추천: Python 완전 정복