CSR vs SSR vs SSG의 차이
2023. 3. 2. 19:08
반응형
CSR(Client Side Rednering)
과정
👉 유저가 앱에 접속한다
👉 앱은 브라우저에게 javascript 정보가 들어있는 빈 html 문서를 전달
👉 브라우저가 javascript 파일을 다운로드하고, 유저는 그동안 빈 화면을 봄
👉 다운로드가 끝나면 브라우저는 리액트 코드가 들어있는 js 파일을 실행 (=document.createElement과 같이 JS에서 HTML 태그를 생성하기 때문에, JS 파일이 실행되기 전까지는 빈화면인 것이다)
장점
- 새로고침이 발생하지 않아 자연스러운 UX
- 서버 부담이 적다
단점
- 첫페이지 로딩이 SSR에 비해서 느리다
- SEO에 취약하다
SSR(Server Side Rendering)
과정
👉 유저가 앱에 접속한다
👉 서버에서 리액트를 실행하고, 리액트는 UI를 렌더링
👉 서버는 렌더링된 결과를 통해 HTML 파일을 브라우저에 전달한다 (이 때 유저는 앱의 초기화면을 보게 된다)
👉 이후에 브라우저는 리액트 코드가 들어있는 javascript 파일을 다운받아 실행
👉 앞에서 불러온 HTML과 자바스크립트 코드가 동기화되어 앱이 동적으로 상호작용
장점
- 첫 페이지 로딩이 CSR에 비해 빠르다 (=JS가 다운로드 되는 동안 사용자는 무언가를 보고 있을 수 있다)
- SEO(검색엔진최적화) - google의 검색봇 등의 크롤링을 위해서 정적인 웹페이지의 리소스를 제공
단점
- 첫페이지 외 나머지 페이지 로딩은 CSR에 비해 느리다(=첫 페이지를 로딩한 과정을 정확하게 다시 실행하기 때문)
- 매번 서버에 요청하기 때문에 서버 자원을 더 많이 사용한다
- 페이지 로드가 너무 무겁다면, 오히리 사용자 경험을 개선하는게 아니라 해칠 수 있다 (ex 대시보드)
SSG (Static Site Generator)
과정
빌드 시에 HTML이 생성되고, 매 요청마다 재사용
각 페이지의 html, js, css 파일을 빌드해서 URL별로 파일을 따로 생성한다. 이미 정의되어있는 파일이 존재하므로, 매우 빠른 정적 렌더링을 사용할 수 있다.
정적 블로그, 회사소개 사이트 등 단순한 페이지는 항상 같은 화면이 유저에게 보여지므로 매번 동적으로 생성될 필요가 없기 때문에 SSG를 사용하는 게 유리하다.
장점
- SEO에 유리하다는 서버사이드렌더링의 장점을 취함
- 미리 만들어 둔 페이지를 클라이언트에게 제공하므로 렌더링 속도가 빠름
단점
- 모든 URL에 대해 개별 HTML 파일을 생성해야 하기 때문에, URL을 예측할 수 없으면 적용이 어렵다.
반응형
'한 걸음 > React & Next.js' 카테고리의 다른 글
[React] isMobile - 모바일 화면사이즈인지 판별하는 custom hook 만들어 쓰기 (0) | 2023.03.09 |
---|---|
[styled-components] theme에 반응형 기준사이즈 및 자주쓰는 컬러 추가하기 (0) | 2023.03.07 |
vercel로 배포한 사이트 새로고침 시 404 에러 뜨는 문제 해결 (0) | 2023.01.27 |
vercel로 배포한 사이트에서 env 파일에 들어있는 key값 관리하기 (0) | 2023.01.27 |
[Recharts] 리차트(recharts) 가로 막대그래프 구현 (0) | 2022.12.19 |