서버측에서 주기적으로 HTML을 서버에서 생성해두고 내려줌(처음 빌드 시점에 만들어두고, 설정한 주기마다 다시 렌더링하여 HTML을 생성해둔다)
사용페이지
장점
단점
구현방법
// pages/posts/[id].js
import { useRouter } from 'next/router';
import { getPostData, getAllPostIds } from '../../lib/posts';
export default function Post({ postData }) {
const router = useRouter();
if (router.isFallback) {
return <div>Loading...</div>;
}
return (
<article>
<h1>{postData.title}</h1>
<div dangerouslySetInnerHTML={{ __html: postData.contentHtml }} />
</article>
);
}
export async function getStaticPaths() {
const paths = getAllPostIds();
return {
paths,
fallback: true, // true이면 빌드되지 않은 페이지를 접근할 때 ISR이 적용됩니다.
};
}
export async function getStaticProps({ params }) {
const postData = await getPostData(params.id);
return {
props: {
postData,
},
revalidate: 10, // 페이지가 10초마다 재생성됩니다.
};
}
Next.js가 빌드를 하는 시점에 서버에서 정적인 HTML을 미리 생성한다.
사용 페이지
장점
단점
특징