Next.js 13+ (App Router)에서는 별도의 설정 없이도 기본적으로 Static Rendering을 지향함.
| 동적 함수 사용 | 데이터 캐시 사용 | 페이지 분류 | Full Route Cache 적용 |
|---|---|---|---|
| Yes | No | Dynamic Page | 미사용 (매 요청 시 렌더링) |
| Yes | Yes | Dynamic Page | 미사용 (매 요청 시 렌더링) |
| No | No | Dynamic Page | 미사용 (캐시되지 않은 데이터 포함) |
| No | Yes | Static Page | 사용 (최초 렌더링 후 저장) |
// 1. 기본 Static Page (Full Route Cache 대상)
export default async function Page() {
const res = await fetch('https://api.example.com/data'); // 기본값: cache: 'force-cache'
const data = await res.json();
return <div>{data.title}</div>;
}
// 2. Dynamic Page로 강제 전환 (Cache 미적용)
export const dynamic = 'force-dynamic';
// 또는 쿠키, 헤더, searchParams 사용 시 자동 전환
cookies()나 headers()를 컴포넌트 내에서 호출하면 해당 페이지가 자동으로 Dynamic Page가 되어 풀 라우트 캐시 혜택을 받지 못함을 간과함.next dev)에서는 매번 최신 코드를 반영하기 위해 풀 라우트 캐시가 작동하지 않음. 반드시 next build 후 next start를 통해 성능 확인 필요.핵심 요약
- 빌드 시점의 HTML/Payload 서버 저장 기술
- 정적 페이지(Static Page) 판정 시 자동 적용
- 동적 함수 미사용 및 데이터 캐싱 활성화 필수
출처: 한 입 크기로 잘라먹는 Next.js(v15)