기본적으로 Pre render 방식과 CSR을 혼용하는 하이브리드 방식.
페이지의 처음 상태를 HTML로 미리 렌더링(SSR)
데이터와 상호작용 필요하면 리액트가 프론트엔드에서 데이터를 불러옴.
앵귤러, 리액트 등 많은 웹 프레임워크들이 기본적으로 지원하는 방식.
데이터 페칭 이후에 렌더링.
로딩 과정을 거쳐 데이터를 불러온후 페이지를 렌더링한다.
데이터 페칭 이전에 렌더링.
CSR과 대비되는 렌더링 방식으로 SSR, SSG 등이 여기에 포함된다
모든 리퀘스트에 대해 페이지의 HTML이 JSON data, javascript instruction과 함께 새롭게 생성된다.
생성된 HTML은 정적인 페이지를 빠르게 보여주는데 이용되고, JSON data와 Javascript instruction은 컴포넌트를 반응형으로 만들어주는데 이용됨. (hydration)
HTML이 빌드타임에 생성된다.
배포 시 HTML이 CDN에 저장되어 request에 응답한다.
Next.js의 Edge caching을 활용.
클라이언트와 물리적으로 가까운 장소(edge network - CDN)에 페이지가 저장 및 캐싱되어 데이터를 요청하는 클라이언트에게 제공된다.
기존의 캐싱 방법과 메커니즘을 edge computing infra에 통합.
메모리 스토리지를 최종 사용자에게 더 가깝게 이동시킴으로써 메인 서버의 부담을 줄이고, 원활한 콘텐츠 전달을 가능하게 한다.
https://vercel.com/docs/concepts/edge-network/caching?utm_source=next
SSG의 단점을 보완한 방식. 설정한 특정 시간이 경과되면 자동으로 re-build 실행.
(The data is fetched once on build time and will be fetched again after a certain cooldown and served on the second visit.)
모든 유저의 요청에 대해 최신 데이터를 유지해야하는 경우에는 SSR 등을 사용하고
그렇지 않은 경우에는 서버 부담을 완화하기 위해 ISR(SSG)을 활용하자.
https://dev.to/pahanperera/visual-explanation-and-comparison-of-csr-ssr-ssg-and-isr-34ea
https://nextjs.org/learn/foundations/how-nextjs-works/cdns-and-edge
https://www.solutelabs.com/blog/client-side-vs-server-side-rendering-what-to-choose-when