CSR/SSR 개념, 장단점, CSR 등장 배경

2023. 9. 12. 15:57·Frontend

브라우저 렌더링 방식에는 CSR(Client Side Rendering)과 SSR(Server Side Rendering) 두 가지가 있다. 이 둘의 차이점, 장단점을 알아보고 이를 공부하며 생긴 궁금증을 풀어보려 한다.

 


CSR  (Client-Side Rendering) 개념

클라이언트 쪽에서 렌더링 하는 거다.
클라이언트가 웹사이트 렌더링에 필요한 html, css, js를 전부 받고, js를 실행해 html을 채운다고 보면 된다.

다음은 렌더링 과정이다.

  1. 사용자가 웹사이트를 요청
  2. 서버가 빈 html 껍데기와 번들된 javascript 파일들을 클라이언트에게 보냄 (=최초에 한 번 싹다 보내는 거임)
  3. 브라우저가 html & javascript를 다운로드함
  4. 브라우저가 javascript를 실행하여 화면을 그림 (=DOM을 광범위하게 수정해 최종적인 html을 렌더링함)
    • 이제 사용자는 placeholder로 채워진 웹사이트를 보게 됨
    • 이후 API 요청으로 placeholder 자리에 데이터를 채움 => 웹페이지가 상호작용 가능해짐
  5. 사용자가 상호작용을 하면, 수정이 필요한 부분만 바꿔서 다시 렌더링함

 

SSR (Server-Side Rendering) 개념

서버 쪽에서 렌더링해서 클라이언트에게 보내주는 방식이다. (전통적인 방식)
서버가 html을 다 채워서(필요한 데이터, css까지 적용) 클라이언트에게 보내준다고 보면 된다.

다음은 렌더링 과정이다.

  1. 사용자가 웹사이트를 요청
  2. 서버가 데이터, css가 적용된 html을 만들어 클라이언트에게 보냄
  3. 브라우저가 html을 다운로드하고, 띄움
    • 이제 사용자는 웹페이지를 보게 됨
  4. 사용자가 상호작용을 하면, 1~3과정을 통해 다시 렌더링함(=새로고침처럼)

CSR의 장단점

👍장점

  • 서버 부하가 덜함
  • (SSR에 비해) 인터랙션이 빠름
    • SSR은 페이지 전체를 다시 렌더링(새로고침 발생)하는 반면, CSR은 필요한 부분만 다시 불러오기 때문

👎단점

  • 첫 페이지 로딩이 느림
    • 웹사이트의 전체를 한 번에 다운로드하고, 그게 다 돼야 첫 페이지가 보이니까
    • code splitting을 통해 어느 정도 해결할 수 있음
  • 검색엔진최적화(SEO)에 약함
    • 처음에 html을 다운로드했을 때, javascript는 다운로드하지 않은 상태임
    • => javascript가 실행되어야 콘텐츠가 생기고 그래야 metadata가 바뀜
    • => 결국 검색엔진 봇이 처음에 서치한 html는 metadata가 없는 빈 껍데기같은 상태인 셈

 

SSR 장단점

👍장점

  • 첫 페이지 로딩이 빠름 (즉각 렌더링할 수 있게 하니까)
  • 검색엔진최적화(SEO)에 좋음 (서버에서 html을 완성해서 주니까)

👎단점

  • 서버 부하가 일어날 수 있음
  • (CSR에 비해) 인터랙션이 느림
    • 사용자가 상호작용할 때마다 매번 서버에 요청하고 페이지를 렌더링해야하기 때문

왜 CSR이 생겨났을까?

과거에는 SSR 방식으로 웹 렌더링을 했다. 그런데 시간이 흐르면서 웹이 많은 데이터를 담아야 하고, 상호작용도 자주 일어나고, 더 예쁘고 좋은 UI/UX를 필요로 하는 등 SSR이 단점이 극대화되는 쪽으로 웹이 발전했다. 또 SSR 방식은 페이지 깜빡임 문제(Blinking Issue)도 가지고 있었다. (이외에도 개인 컴퓨터의 성능 향상, javascript 표준화 등 여러 복합적인 것들이 CSR 등장의 이유가 됨)

 

웹의 발전에 따라 발생한 SSR 방식의 문제점들을 해결하기 위해 *SPA(Single Page Application), CSR이 등장했다. 서버에서 매번 html을 완전히 만들어서 보내지 말고, 클라이언트가 필요한 데이터를 json으로 요청하면 그에 맞는 응답을 보내고, 클라이언트는 javascript를 실행해서 그 데이터를 업데이트(렌더링)하자"는 거다.

*SPA(Single Page Application)는 한 페이지에 머물면서(=동일한 url에서) 어떤 인터랙션이 일어나면 그에 필요한 데이터만 업데이트하는 그런 방식이다(CSR 방식 사용). 말 그대로 하나의 페이지로 이루어진 애플리케이션이다.
대표적으로 React가 SPA를 만드는 것을 지원하는 라이브러리 중 하나이다.
'react로 만든 어떤 사이트는 url이 하나만 있지 않던데' => 그건 라우팅을 써서 그런 거고 일단 기본적인 개념은 이렇다는 거임

언제 뭘 써야 할까?

- CSR이 좋은 경우

  • 웹사이트 내 상호작용이 많이 일어나는 경우
  • 서버 부하가 일어나면 곤란한 경우 (서버 성능이 안 좋은 경우)

- SSR이 좋은 경우

  • 첫 페이지 로딩이 빨라야 하는 경우
  • 검색엔진최적화(SEO)가 중요한 경우 (ex. 네이버 블로그)
  • 웹사이트에 상호작용이 많이 없는 경우
저작자표시 비영리 변경금지 (새창열림)

'Frontend' 카테고리의 다른 글

MSW 동적 경로가 정적 경로를 가로채는 문제 해결하기  (0) 2025.10.17
html script type="module" 시 CORS 에러 원인 분석 및 해결 방안  (0) 2025.05.22
'Frontend' 카테고리의 다른 글
  • MSW 동적 경로가 정적 경로를 가로채는 문제 해결하기
  • html script type="module" 시 CORS 에러 원인 분석 및 해결 방안
톱치
톱치
나를 위한 기록을 합니다
  • 톱치
    기록
    톱치
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
    • 전체보기 (51)
      • Articles (0)
      • Frontend (3)
        • JS, TS (16)
        • HTML, CSS (5)
        • React (6)
        • Dart (3)
      • Backend (6)
      • Others (3)
      • Algorithm (5)
      • 회고 (4)
  • 링크

    • GitHub
  • 태그

    ts
    token
    회고
    login
    BCrypt
    js
    Node
    우아한테크코스
    Redux
    programmers
    css
    javascript
    프리코스
    todolist
    React
    object
    node.js
    dart
    BFS
    TypeScript
  • hELLO· Designed By정상우.v4.10.3
톱치
CSR/SSR 개념, 장단점, CSR 등장 배경
상단으로

티스토리툴바