안녕하세요 ! 요즘 next.js에 입문을 다시 시작했는데 시작하기전에 배경지식이 좀 필요하더라구요 !
그래서 그 배경지식중에 일부분이지만 중요한 SSR,CSR,SSG,ISR에 대해서 정리를 해보려구합니다 😆
웹사이트가 어떤 렌더링방식으로 렌더링되는지 궁금해서 검색해봤는데
바닐라 JavaScript
는 SSR
(Server side rendering)방식
react는
CSR
(Client side rendering)방식
Gatsby는
SSG
(Static-Site-Generation)방식으로 작동된다고합니다 !
사실 대게 이렇게 작동한다는거구 개발자가 코드를 수정해서 다른 렌더링방식으로도 렌더링 할 수있답니다 !
이제는 같이 차근차근 하나씩 알아볼까여?
SSR
은 서버사이드렌더링 말 그대로 html파일을 서버에서 렌더링
을 진행한다는 것입니다!
서버사이드렌더링방식의 렌더링은 사용자가 페이지에 진입할떄 그떄그떄 pre-rendering된 html 페이지를 가져온 후 js파일을 다운받아요
옛날 웹사이트를 생각하면 이해하기 쉬울거예여!
그럼 한번 페이지를 들어간다면 어떻게될지 같이 생각해볼까요?
정리해볼게요
장점
SEO
가 좋아요. (Search Engin Optimization) 이게 좋으면 구글 검색어 상위에 뜹니다 !서버
에서 API요청
을 처리하기떄문에 보안
이 좋습니다.단점
네트워크 요청 부담이 커진다
.하이드레이션
과정)MPA
방식이라 페이지가 전환되면 새로고침이 됨CSR
(Client side rendering)은 클라이언트에서 렌더링
을 하는 방식입니다 !
사용자가 최초 페이지에 들어간다면 번들링된 index.html파일을 다운받습니다
index.html에 모든 페이지의 파일이 들어있기떄문에 이 파일이 로딩되면 모든 파일을 다운받았다는거구
그후 화면이 렌더링됩니다 .
이떄 첫화면을 렌더링할떄 번들링된 큰 파일을 다운
받아야 화면이 나오기떄문에 첫 렌더링이 느리다는 단점이 있고
index.html파일은 빈파일이기때문에 SEO
가 좋지않습니다.
하지만 번들링된 파일안에 모든페이지의 js파일이 있기떄문에 한번 첫로딩을 한다면 페이지 전환시 새로고침없이 페이지전환
이 가능합니다. 또한 index.html파일만 네트워크요청을 하면되기떄문에 네트워크 서버 부담이 적습니다.
하지만 클라이언트쪽에서 api요청을 보내기떄문에 보안이 좋지 않다는 단점도 있답니다 !
이제 사용자 입장에서 최초 페이지에 진입하면 어떤 플로우로 되는지 같이 정리해볼까요?
장점
단점
마지막으로 SSG입니다 ! 애는 ISR이랑 묶어서 설명할게요 !
SSG
는 빌드시점에 미리 페이지를 렌더링
합니다.
그렇기때문에 정적인사이트를 구축할떄 좋은 효율
을 낼수있어요 예를들어 소개페이지 등
하지만 정적인사이트도 가끔씩은 재빌드가 필요할수도 있겠죠?!
그럴떄는 ISR
을 사용하면됩니다 !
장점
단점
Universal Rendering
SSR을 통해 빠른 FCP를 구현하고 클라이언트에서 하이드레이션
을 통해 다시 렌더링하는 방식입니다 !
쉽게 말해 초기 로딩시에는 SSR처럼 작동하고 그 이후에는 CSR로 작동하는 방식
입니다.
Univeral Rendering 장점
Univeral Rendering 단점
별도의 서버가 필요
하며, 구현 또는 구현을 위한 프레임워크 학습에 들어가는 비용이 크다.
ISR(증분 정적 재생성)은 런타임 중에 정적 페이지를 만들거나 업데이트 수 있도록 해주는 SSG과 SSR의 하이브리드 솔루션이다.
Next.js에서 제공하는 기능이기도 하며, 전체 사이트를 **다시 빌드할 필요없이**
페이지별로 정적 생성을 사용할 수 있게 해준다.