stack-analysis
CHAPTER 15 / 90
읽기 약 2분
FUNCTION
ISR + 온디맨드 재검증: 캐시 전략
핵심 개념
fetch revalidate·revalidateTag·on-demand revalidation — 블로그·이커머스 캐시.
본문
fetch + revalidate
// app/posts/[slug]/page.tsx — 서버 컴포넌트
async function getPost(slug: string) {
const res = await fetch(`https://api.example.com/posts/${slug}`, {
next: { revalidate: 3600 }, // 1시간마다 재생성
});
return res.json();
}
export default async function Page({ params }: { params: { slug: string } }) {
const post = await getPost(params.slug);
return <article>{post.content}</article>;
}tags + revalidateTag (정밀 무효화)
// 데이터 페칭에 태그 부착
async function getPosts() {
const res = await fetch('https://api.example.com/posts', {
next: { tags: ['posts'], revalidate: 3600 },
});
return res.json();
}
async function getPost(slug: string) {
const res = await fetch(`https://api.example.com/posts/${slug}`, {
next: { tags: ['posts', `post-${slug}`] },
});
return res.json();
}
// 글 수정 시 — 해당 글만 무효화
'use server';
import { revalidateTag } from 'next/cache';
export async function updatePost(slug: string, data: any) {
await fetch(`https://api.example.com/posts/${slug}`, {
method: 'PATCH',
body: JSON.stringify(data),
});
revalidateTag(`post-${slug}`); // 이 글만
// 또는 revalidateTag('posts'); — 모든 글 목록 재생성
}On-Demand Revalidation API
// app/api/revalidate/route.ts — 외부 CMS에서 호출
import { revalidateTag } from 'next/cache';
import { NextRequest, NextResponse } from 'next/server';
export async function POST(req: NextRequest) {
const secret = req.headers.get('x-secret');
if (secret !== process.env.REVALIDATE_SECRET) {
return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });
}
const { tag } = await req.json();
revalidateTag(tag);
return NextResponse.json({ revalidated: true, tag });
}
// CMS webhook → POST /api/revalidate { tag: 'posts' }
// → 즉시 캐시 무효화 + 다음 요청에서 새 데이터캐시 전략 결정 트리
데이터가 자주 바뀌는가?
├─ 거의 안 바뀜 (회사 소개, 약관)
│ → 빌드 타임 + force-static
├─ 시간당 1~2회 (블로그, 뉴스)
│ → revalidate: 3600
├─ 자주 (이커머스 가격, 재고)
│ → revalidate: 60 + on-demand revalidation
└─ 실시간 (채팅, 알림)
→ cache: 'no-store' 또는 streaming다음 챕터
CH.16 "미들웨어 실전" — 인증 + 지역화 + A/B 테스트.
AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude
무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6
내 코드의 ISR 캐시 전략 부분을 분석해서 실전 분석 + 개선 우선순위를 알려줘.
ChatGPT
무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro
ISR 캐시 전략 관련 인기 라이브러리/패턴 5개를 비교 분석해서 패턴 추출를 알려줘.
Gemini
무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro
내 프로젝트 전체에서 ISR 캐시 전략 최적화 가능 위치를 보고해줘.
Grok
무료: Grok 4.1 / SuperGrok $30/mo
2026년 한국 프론트엔드 시장의 ISR 캐시 전략 트렌드를 솔직히 알려줘.
⭐ 이것만 기억하세요
ISR + 온디맨드 재검증: 캐시 전략은 이 3가지만 확실히 잡으세요
1.fetch revalidate로 ISR — 빌드 후 자동 재생성
2.tags + revalidateTag = 정밀 무효화 — 변경된 콘텐츠만
3.On-Demand API로 외부 CMS와 통합 — 즉시 반영
공유하기
진행도 15 / 90