빌드 시간에 HTML을 각 페이지별로 서버에 생성해 놓고 요청이 오면 생성된 HTML을 반환하는 것
브라우저가 페이지를 요청하면 이미 생성된 HTML만 반환하고, 이것은 재사용이 가능해 응답속도가 매우 빠르다.
따라서 외부 요청에 의해서 변동이 없는 페이지들은 먼저 만들어놓고 재사용하면 편리하다.
export async function getStaticProps(context) {
return {
props: {},
}
}
function Blog({posts}) {
return (
<ul>
{posts.map((post) => (
<li>{post.title}</li>
))}
</ul>
)
}
export async function getStaticProps() {
const res = await fetch('https://.../posts')
const posts = await res.json()
return {
props: {
posts,
},
}
}
export async function getStaticPaths() {
return {
paths: [
{ params: {...} }
],
fallback: true // false or blocking
};
}
return {
paths: [
{ params: { id: '1'} },
{ params: { id: '2'} }
],
fallback: ...
}export async function getServerSideProps(context) {
return {
props: {},
}
}
아직 getStaticProps랑 getServerSideProps의 다른 점이 와닿지가 않네 ,, ㅍㅇㅌ
getStaticProps와 getServerSideProps의 차이점
- getStaticProps는 빌드 시에 데이터를 가져온다. 그래서 한번 빌드되고 나면 정적으로 움직이지 않는다.(static)
- getServerSideProps는 해당 페이지가 요청될 때 마다 데이터가 재요청된다. 따라서 페이지를 이동할 때 마다 데이터를 새로 불러와 느리지만 동적인 구성이 가능하다.(SSR)