리액트를 공부하다보면 CSR과 SSR이라는 용어들을 접하게 된다.
이번 포스팅에서는 CSR과 SSR에 대해서 알아보려고 한다.
CSR과 SSR은 브라우저가 렌더하는 방식들을 의미하는 단어들이다.
즉, 서버에서 처리 없이 클라이언트로 보내주기 때문에 js가 모두 다운로드 되고 실행이 끝나기 전까지는 사용자가 볼 수 있는게 없다.
- user가 웹사이트 요청을 보냄.
- cdn이 html파일과 js로 접근할 수 있는 링크를 클라이언트로 보냄.
- 클라이언트는 html과 js를 다운로드 받음.
- 다운이 완료된 js가 실행됨. 데이터를 위한 api가 호출됨.
- api로부터의 요청에 서버가 응답함.
- api로부터 받아온 데이터를 placeholder자리에 넣어줌. 페이지는 상호작용이 가능해짐.
즉, 서버에서 이미 렌더링 가능한 상태로 클라이언트에 전달되기 때문에 js가 다운로드 되는 동안 사용자는 무언가를 보고 있을 수 있다.
- user가 웹사이트 요청을 보냄.
- 서버는 즉시 렌더링 가능한 html파일을 만듦.
- 클라이언트에 전달되는 순간 이미 렌더링 준비가 되어있기 때문에 html은 즉시 렌더링 됨.
- 클라이언트가 js를 다운받음.
- 다운이 받아지고 있을 때 유저는 컨텐츠를 볼 수 있지만 사이트 조작은 할 수 없음. 이 때 사용자 조작을 기억하고 있음.
- 브라우저가 js프로임워크를 실행함.
- js까지 성공적으로 컴파일 되었기 때문에 기억하고 있던 사용자 조작이 실행되고 웹 페이지는 상호작용이 가능해짐.
따라서 Next.js가 개발 되었다.
SSR의 단점인 불필요한 부분까지 모두 재 렌더링 하는 것과 CSR의 단점인 SEO를 보완한 리액트의 프레임 워크가 Next.js이다.
https://nextjs.org/