Next.jsHard#240
generateStaticParams는 어떤 상황에서 사용하나요?
#Next.js#generateStaticParams#SSG#Routing
답변 포인트
동적 경로의 정적 생성 대상 지정를 기준으로 정의, 장점, 한계, 예시를 함께 설명해보세요.
정답 및 해설
빠른 요약
generateStaticParams는 동적 라우트에서 빌드 시 미리 생성할 파라미터 목록을 반환합니다. 블로그, 상품 상세처럼 알려진 경로를 정적으로 만들 때 사용합니다.
generateStaticParams는 동적 라우트의 가능한 params를 빌드 시점에 알려주어 정적 페이지를 미리 생성할 때 사용합니다. 블로그 글, 상품 상세, 문서 페이지처럼 공개 경로 목록을 알고 있을 때 유용합니다.
예시
TSX
// app/posts/[slug]/page.tsx
export async function generateStaticParams() {
const posts = await getPosts();
return posts.map((post) => ({ slug: post.slug }));
}
export default async function PostPage({ params }) {
const post = await getPost(params.slug);
return <Article post={post} />;
}언제 사용하나요?
- 빌드 시 주요 페이지를 미리 만들어 빠르게 제공하고 싶을 때
- CDN 캐시 효율을 높이고 싶을 때
- 동적 라우트지만 가능한 경로가 제한적일 때
주의점
경로 수가 너무 많으면 빌드 시간이 길어집니다. 수십만 상품을 모두 정적 생성하기보다 인기 상품만 생성하고 나머지는 동적/ISR로 처리하는 전략이 필요할 수 있습니다.
또한 새 글이 추가되었을 때 어떻게 반영할지, revalidate와 on-demand revalidation을 함께 설계해야 합니다.
면접 답변 포인트
generateStaticParams는 [slug] 같은 동적 라우트의 정적 생성 대상 params를 반환하는 함수입니다. 성능은 좋지만 경로 수와 갱신 전략을 고려해야 한다고 답하면 됩니다.