SSR과 CSR

LOOPY·2022년 2월 17일
0

기술면접준비

목록 보기
7/15

1. SSR (Server Side Rendering)

: 서버 측에서 렌더링 준비를 끝마친 상태로 클라이언트에 전달하는 방식

  • User가 Website 요청 보냄
  • Server는'Ready to Render', 즉시 렌더링 가능한 html 파일 생성
  • Client에 전달되는 순간, 이미 렌더링 준비가 되어있기 때문에 HTML은 즉시 렌더링 (JS가 읽히기 전이므로 사이트 자체 조작은 불가능)
  • Client가 JS 다운로드 (이 동안 user는 contents를 볼 수 있지만 조작 할 수는 없고, 만약 조작한다면 기억하고 있음)
  • 브라우저가 JS 프레임워크 실행
  • JS까지 성공적으로 컴파일 끝나면, 기억하고 있던 사용자 조작이 실행되고 웹 페이지가 상호작용 가능해짐


2. CSR (Client Side Rendering)

: 서버가 요청을 받으면 클라이언트에 HTML과 JS를 보내주고, 클라이언트는 그것을 받아 렌더링 시작

  • User가 Website 요청 보냄
  • CDN이 HTML 파일과 JS로 접근할 수 있는 링크를 Client로 보냄
    (CDN: 엔드 유저의 요청에 물리적으로 가까운 서버에서 응답하는 방식)
  • Client는 HTML과 JS를 다운로드 (SSR과 달리 이 동안 유저는 아무것도 볼 수 없다)
  • 다운이 완료된 JS 실행, 데이터를 위한 API 호출 (이 동안 유저는 placeholder를 보게됨)
  • Server가 API 요청에 응답
  • API로부터 받아온 데이터를 placeholder 자리에 넣어주고, 이제 페이지 상호작용 가능


3. SSR과 CSR의 차이

3-1. 웹 페이지 로딩 시간

  • 첫 페이지 로딩
    : CSR의 경우 HTML, CSS와 모든 스크립트들을 한 번에 불러오고, SSR은 필요한 부분의 HTML과 스크립트 부분만 불러오므로, 평균적으로 SSR이 더 빠름
  • 나머지 로딩
    : CSR은 이미 첫 페이지 로딩 시 나머지를 받아왔기 때문에 빠르고, SSR은 첫 페이지 로딩 과정을 정확히 다시 실행하므로 더 느림
    👉🏻 처음엔 SSR이, 나머지는 SSR이 더 좋다!

3-2. SEO 대응

: 검색 엔진은 자동화된 로봇인 크롤러로 웹사이트를 읽는데, CSR은 JS를 실행시켜 동적으로 컨텐츠가 새성되기 때문에 JS가 실행되어야 metadata가 바뀌고, SSR은 애초에 서버 사이드에서 컴파일되어 클라이언트로 넘어오기 때문에 크롤러에 대응하기 용이하다.
👉🏻 SSR이 용이하다!

3-3. 서버 자원 사용

: SSR이 매번 서버에 요청을 하므로 서버 자원을 더 많이 사용한다. 반면 CSR은 클라이언트에게 일감을 몰아주므로 당연히 서버에 부하가 적다.
👉🏻 CSR이 서버 부하가 적다!


4. 사용 권장 예시

4-1. SSR 사용

  • 네트워크가 느릴 때(각 페이지를 나눠 불러오므로)
  • SEO(Search Engine Optimization; 검색 엔진 최적화)가 필요할 때
  • 최초 로딩이 빨라야할 때
  • 메인 스크립트가 크고 로딩이 매우 느릴 때(한 번의 요청에 아예 렌더 가능한 페이지가 돌아오므로)
  • 웹 사이트에 상호작용이 별로 없을 때

4-2. CSR 사용

  • 네트워크가 빠를 때
  • 서버의 성능이 좋지 않을 때
  • 사용자에게 보여줘야 하는 데이터 양이 많을 때(로딩창 띄울 수 있으므로)
  • 메인 스크립트가 가벼울 때
  • SEO 관심 없을 때
  • 웹 어플리케이션에 사용자와 상호작용이 많을 때(아예 렌더링 되지 않아 행동을 막는 것이 경험에 오히려 유리)

참고자료
https://proglish.tistory.com/216

profile
1.5년차 프론트엔드 개발자의 소소한 기록을 담습니다 :-)

0개의 댓글