
브라우저 렌더링 방식인 CSR과 SSR에 대해 본격적으로 알아보기 전에, 브라우저 렌더링이 뭔지 살펴보자.
브라우저 렌더링 : 브라우저가 서버로부터 요청해 받은 내용을 화면에 표시해주는 작업.
- 브라우저 : 서버로부터 전달받은 문서를 브라우저 엔진이 해석해 브라우저 화면을 그림 ⬅️ 서버 : HTML, CSS, JavaScript 문서 전달
렌더링 주체가 클라이언트(브라우저)로, 클라이언트인 브라우저가 서버에서 받은 데이터로 화면을 그리는 것.
- 서버는 요청을 받으면 클라이언트에 HTML과 JavaSript를 보내주고, 클라이언트는 그것을 받아 렌더링함

클라이언트가 서버에게 웹페이지를 요청 -> 브라우저가 JS 다운 -> 브라우저가 리액트를 실행 -> 페이지 렌더링 : Viewable + Interactable
서버에서 처리 없이 클라이언트로 보내주기 때문에 JavaScript가 모두 다운로드 되고 실행이 끝나기 전까지 사용자는 볼 수 있는 것이 없음

렌더링의 주체가 서버로, 서버는 클라이언트 요청이 들어올 때마다 매번 새로운 화면을 만들어 클라이언트(브라우저)에 제공하는 것

서버가 브라우저에 ready to be rendered HTML 응답 전송
-> 브라우저가 화면을 렌더링 : Viewable
-> 브라우저가 JS를 다운 받음
-> 브라우저가 리액트를 실행시킴 : Interactable
서버에서 미리 렌더링하여, 렌더 가능한 HTML 파일을 보내주기 때문에, JS를 다운받는 동안 사용자는 화면을 볼 수 있다.

SSR Wins!
- CSR : HTML, CSS와 모든 스크립트들을 한 번에 불러오는 방식
- SSR : 필요한 부분의 HTML과 스크립트만 불러오는 방식 ➡️ 더 빠름
나머지 콘텐츠(첫 페이지 로딩 후, 사이트의 다른 페이지로 이동) 로딩 시간
CSR Wins!
- CSR : HTML, CSS와 모든 스크립트들을 첫 페이지 로딩에서 한번에 불러오는 방식이므로 나머지 컨텐츠 부분을 구성하는 코드를 받아왔기 때문에 비교적 빠르게 작동
- SSR : 필요한 부분의 HTML과 스크립트만 불러오는 방식이므로 나머지 컨텐츠 부분을 첫 페이지를 로딩한 과정처럼 정확하게 다시 실행하기 때문에 비교적 느리게 작동
SEO(검색 엔진 최적화) : 웹 사이트가 organic 검색 방식을 통해 검색 엔진에서 상위에 노출될 수 있도록 최적화하는 과정
CSR 방식에서는 페이지의 주요 컨텐츠가 JavaScript에 의존하기 때문에 SEO 문제가 발생할 수 있는 반면, SSR 방식에서는 서버에서 미리 페이지를 렌더링하여 완성된 HTML을 제공하기 때문에 웹 크롤러가 페이지 내용을 쉽게 파악할 수 있기 때문에 SEO에 더 유리한 방식.
SSR Wins!
- CSR : JavaScript를 실행시켜 동적으로 컨텐츠가 생성되기 때문에, JavaScript가 실행 되어야 meatadata가 바뀌는 방식
이전 크롤러들은 JavaScript를 실행시키지 않았기에 SEO 최적화가 필수적이었음- SSR : Server Side에서 컴파일되어 클라이언트로 넘어오기 때문에 크롤러에 대응하기 용이
JavaScript를 실행시켜 동적으로 컨텐츠를 생성하는 CSR에 비해 클라이언트로 넘어오기 전에 JavaScript를 서버 쪽에서 컴파일되기 때문에, SEO에 대응하기에 용이한 방식은 SSR 방식
CSR Wins!
- CSR : 클라이언트에서 JavaScript를 실행시켜 컨텐츠를 생성한 후, 서버로 보내기 때문에 서버 자원 사용이 적음
- SSR : 매번 서버를 통해 JavaScript 컴파일을 오청하기 때문에 서버 자원의 사용이 많음 ➡️ 서버 과부하
https://www.startupcode.kr/company/blog/archives/12
https://velog.io/@hyungjin_han/Computer-Science-SSR-VS-CSR?ref=codenary