SSR과 CSR은 무엇인가

Haizel·2023년 5월 17일
1
post-thumbnail

기술 면접을 대비해 개념을 🍰 한입 크기로 잘라 정리합니다.
깃허브가 궁금하다면 놀러오세요!
👉 깃허브 보러가기 (Since 2023.05.10 ~ )

SSR(Server Side Rendering)


서버쪽에서 렌더링 준비를 모두 끝마친 상태로 클라이언트에 전달하는 방식입니다.

SSR 단계

  1. 사용자가 웹 사이트에 요청을 보냅니다.
  2. Server는 즉시 렌더링 가능한 HTML 파일을 만듭니다.
  3. 클라이언트에 전달된 HTML은 이미 렌더링 준비가 되었기 때문에 즉시 렌더링됩니다. 단 아직 사이트에서 조작은 불가능합니다(JavaScript가 읽히기 전)
  4. 브라우저가 JavaScript를 다운 받습니다.
  5. 이때, 다운이 진행되고 있는 상태에서 사용자는 컨텐츠를 볼 순 있지만 사이트를 조작할 수는 없습니다. 대신 브라우저는 사용자의 조작을 기억해둡니다.
  6. 다운로드가 완료되면 브라우저가 JavaScript Framework를 실행합니다.
  7. JavaScript가 성공적으로 컴파일되면 이전에 기억해둔 사용자의 조작이 실행됩니다.

모든 과정이 완료되면 웹 페이지의 상호작용이 가능해집니다.


CSR (Client Side Rendering)


말 그대로 렌더링이 클라이언트 쪽에서 일어나는 방식입니다. 즉, 요청을 받으면 서버는 클라이언트에 HTML과 JavaScript를 보내주고, 클라이언트는 그것을 받아 렌더링을 시작합니다.

CSR 단계

  1. 사용자가 웹 사이트에 요청을 보냅니다.

  2. CDN이 HTML 파일과 JS로 접근할 수 있는 링크를 클라이언트에게 보냅니다.

    CDN : 엔드 유저의 요청에 물리적으로 가까운 서버에서 요청에 응답하는 방식

  3. 클라이언트는 전달 받은 링크를 통해 HTML과 JS를 다운 받습니다.

  4. 브라우저가 JS를 다운 받습니다. (이때 SSR과 달리 사용자는 컨텐츠를 볼 수 없습니다)

  5. 다운로드가 완료된 JS가 실행 되며 데이터 요청을 위한 API를 호출합니다.

  6. 그럼 서버는 API 요청을 받고 응답합니다.

  7. API를 통해 서버로부터 전달받은 데이터를 placeholder 자리에 넣어줍니다.

모든 과정이 완료되면 웹 페이지의 상호작용이 가능해집니다.


SSR과 CSR의 장,단점


SSR 장점

  1. 첫페이지 로딩이 빠르다.
    • CSR의 경우 모든 HTML, JavaScript를 한번에 불러오지만, SSR은 필요한 부분의 HTML과 JavaScript만 불러와 상대적으로 첫 페이지 로딩 시간이 짧습니다.
  2. SEO(serach engine optimization : 검색 엔진 최적화) 향상
  • 서버에서 렌더링 후 개별 페이지를 넘겨받기 때문에 각 페이지에 대한 정보를 입력하기 쉽습니다. 때문에 CSR보다 SEO를 향상시킬 수 있습니다.

SSR 단점

  1. 화면 깜빡임 현상
    • 링크 이동 시 부분 업데이트를 하는 CSR과 달리 SSR은 새로운 HTML 파일 자체를 서버에서 받아오기 때문에 화면 깜빡임 현상이 있습니다.
  2. 페이지 간 이동 속도가 느리다.
    • CSR은 이미 첫 페이지 로딩 때 모든 부분을 구성하는 코드를 받아온 것에 반해, SSR는 필요한 부분만 받아왔기 때문에 이동한 페이지에 대한 새로운 구성 코드를 받아와야 한다.
  3. 기능 동작 문제
  • SSR은 JavaScript 파일보다 완성된 HTML을 먼저 받아오기 때문에, 화면이 구현되어도 JavaScript 다운이 늦어진다면 기능이 동작하지 않을 수 있습니다.

CSR 장점

  1. 원하는 내용만 업데이트
    • CSR은 빈 HTML에 JavaScript를 이용해 동적으로 DOM을 생성하는 방식으로, 원하는 내용만 업데이틀 할 수 있습니다.
    • 예를 들어 링크를 이동해도 중복해 사용하는 헤더, 푸터와 같은 요소는 업데이트 하지 않고, 변하는 콘텐츠 내용만 업데이트해 로드할 수 있습니다.
  2. 페이지간 이동 속도가 빠르다.

CSR 단점

  1. SEO(serach engine optimization : 검색 엔진 최적화) 취약
    • HTML 파일을 하나만 받아와 작동하기 때문에 페이지 각각에 대한 정보를 담기 어려워 SEO에 취약합니다.
  2. 첫 페이지 로딩이 느리다.

언제 SSR, 또는 CSR를 사용하는게 좋을까?


SSR

  • 네트워크가 느릴 때 (SSR은 각 페이지마다 필요한 내용을 나눠 불러온다)
  • SEO(serach engine optimization : 검색 엔진 최적화)가 필요할 때
  • 최초 로딩이 빨라야 하는 사이트를 개발할 때
  • 웹과 사용자 간의 상호작용이 많지 않을 때
  • 매인 스크립트가 크고 로딩이 느릴때

    CSR은 메인스크립트가 로딩이 끝나면 API로 데이터 요청을 보낸다. 하지만 SSR은 한번의 요청에 아예 렌더가 가능한 페이지가 돌아온다.

CSR

  • 네트워크가 빠르거나 서버의 성능이 좋지 않을 때
  • SEO 가 중요하지 않을 때
  • 메인 스크립트가 가벼울 때
  • 웹과 사용자 간의 상호작용이 많을 때 (모든 작업이 완료되어야 렌더링 되기 때문에, 렌더링 이전 불필요한 사용자의 행동을 막을 수 있다.)


📎 참고문서

profile
한입 크기로 베어먹는 개발지식 🍰

0개의 댓글