October 20, 2021
SSR
은 서버에서 즉시 렌더 가능한 HTML 파일을 보내주는 방식이다.
CSR
은 서버로부터 HTML과 JS 파일을 받아서 클라이언트에서 렌더링을 하는 방식이다.
“즉시 렌더 가능한”의 의미는 다음과 같다.
서버로부터 완전하게 만들어진 HTML 파일을 받아온다.
즉, 클라이언트에서 요청을 보내면 서버는 화면을 표시하는 데 필요한 데이터를 얻어와 모두 삽입하고 CSS까지 모두 적용해서 렌더링 준비를 마친 HTML 코드와 JS 코드를 브라우저에 응답한다.
따라서 다음과 같이 개념을 정의하는 것이 더 이해하기 쉽다.
SSR
은 서버로부터 완전하게 만들어진 HTML 파일을 받아 와서 렌더링하는 방식이다.
일부분의 변경이 필요해 서버로 요청을 보내면 완전하게 만들어진 HTML 파일을 새로 받아와 페이지 전체를 리렌더링한다. 따라서 새로고침(깜빡임)이 발생하여 UX에 좋지 않고, 서버에도 부담이 간다.
CSR
은 서버로부터 CSS, JS 링크만 있는 빈 HTML 파일을 받아 와서 클라이언트 측에서 소스 코드를 실행하며 렌더링하는 방식이다.
일부분의 변경이 필요하면 서버로 요청을 보내 (HTML, JS 파일들이 아니라) 그와 관련된 데이터만 받아온다. 즉, 이미 필요한 소스코드들은 있는 것이다. 처음에 웹 애플리케이션에 필요한 모든 소스코드를 다운받으므로 SSR에 비해 첫 로딩이 느리다.
SSR
은 즉시 렌더 가능한 HTML을 받았으므로 HTML을 받은 즉시 렌더링을 하여 사용자가 화면을 볼 수 있다. 그러나 JS가 읽히기 전이므로 사용자와 인터랙션은 불가능하다. (사용자가 클릭을 해도 아무런 반응이 없다.) 렌더링 이후, JS 파일을 다운받고 난 이후 인터랙션 할 수 있다.
CSR
은 HTML과 JS 파일을 다운받지만 렌더가 불가능한 상태의 파일이므로 사용자는 화면을 볼 수 없다. 이후 추가로 필요한 데이터가 있다면 서버에 요청해서 데이터를 받아온 다음에 이것들을 기반으로 해서 동적으로 HTML을 생성해서 사용자와 인터랙션도 가능하다.
장점
단점
장점
단점
하나의 HTML 파일을 기반으로 자바스크립트를 이용해 동적으로 화면의 컨텐츠를 바꾸는 웹 애플리케이션을 말한다.
React, Vue.js, Angular 등은 SPA를 만드는 것을 도와주는 라이브러리 및 프레임워크이고, CSR을 사용한다.
여러 개의 HTML 파일을 기반으로 구성된 웹 애플리케이션을 말한다. 사용자의 클릭과 같은 interaction이 발생할 때마다 서버로부터 새로운 HTML 파일을 받아와서 해당 링크로 이동하여(새로고침(깜빡임) 발생) 페이지 전체를 새로 렌더링하는 전통적인 웹 페이지 구성 방식이다.
리액트에서 SSR을 사용할 수 있게 지원해주는 프레임워크이다.
즉, CSR과 SSR의 장점만을 합쳐서 나온 React 프레임워크이다.
페이지 이동 시에는 SSR 방식을 사용하고, 나머지 경우에는 CSR 방식을 사용한다.
SSG(Static Site Generation)도 지원한다.
[참고]SSR과 CSR의 차이