개발
[Next.JS] ( SSR, SSG, CSR, ISR ) 관해서
0hyeon의
2023. 3. 21. 10:42
반응형
1.CSR
자바스크립트가 업로드된 이후 랜더링이 시작 되기때문에 초기 랜더링이 오래 걸릴수있다.
기존 리액트 동일( useState,useEffect) Next.js에서 CSR을 그려주는 함수는 따로없다.
const [time, setTime] = useState();
useEffect(() => {
setTime(new Date().toISOString());
}, []);
JS 로드가 안되면, 아무것도 보이지 않는 PRE-RENDERING = REACT ...
2.SSR
server-side-rendering 으로 HTML이 먼저 PRE-RENDERING 된후에 JS로드 시킨다 이과정에서 사용자경험이 올라가게 되는데, 리액트에서는 초기렌더링이 오래걸릴시, 아무것도 볼수없는반면, NEXT환경 SSR 에서는 HTML을 미리 볼수있게된다.
HTML을 미리 렌더링하고, 그 뒤에 요청이 오면 Chunk 단위로 javascript를 보내주어 이벤트가 작동하게 되는 개념이 Hydration이며, Next.js에서 사용되는 방법
export async function getServerSideProps() {
console.log("server");
return {
props: { time: new Date().toISOString() },
};
}
3.SSG
SSG는 빌드타임에 PRE-RENDERING이 진행되며,
SSR에 접근할때마다 생성되는 부화의 발생을 막을수 있다. (NEXT JS에서도 권장하는 방법이라고함)
한번 작성후 변동이 거의 없는 페이지에 용이
(빌드 전까진 ssr처럼 동작하기도 한다)
export async function getStaticProps() {
console.log("server");
return {
props: { time: new Date().toISOString() },
};
}
4.ISR
증분 정적 사이트 재생성 (말이 조금어렵다..)
SSG에서 빌드를 하지 않는다면, 최신화가 안되기 때문에
getStaticProps 와 더불어 revalidate: ( 시간단위 ) 와 함께 사용하면,
ssg를 최신상태로 사용할수 있는 가장 최신의 data fetcing기법
주기적으로 바뀌는 상품페이지나 변동이 잦은 페이지의 경우 용이.
export async function getStaticProps() {
console.log("server");
return {
props: { time: new Date().toISOString() },
revalidate: 1,
};
}
반응형