CSR VS SSR

Maru·2022년 6월 29일
0

CS

목록 보기
1/7
post-thumbnail
post-custom-banner

CSR

Client Side Rendering

렌더링이 클라이언트 쪽에서 일어난다.
즉, 서버는 요청을 받으면 클라이언트에 HTML과 JS를 보내준다. 클라이언트는 그것을 받아 렌더링을 시작한다.

위의 사진은 CSR의 단계를 설명한다.

  1. User가 Website 요청을 보냄.
  2. CDN이 HTML 파일과 JS로 접근할 수 있는 링크를 클라이언트로 보낸다.
    CDN : aws의 cloudflare를 생각하면 됨. 엔드 유저의 요청에 '물리적'으로 가까운 서버에서 요청에 응답하는 방식
  3. 클라이언트는 HTML과 JS를 다운로드 받는다.
    (이때 SSR과 달리 유저는 아무것도 볼 수 없다.😡)
  4. 생략
  5. 다운이 완료된 JS가 실행된다. 데이터를 위한 API가 호출된다.
    (이때 유저들은 placeholder를 보게된다. )
  6. 서버가 API로부터의 요청에 응답한다.
  7. API로부터 받아온 data를 placeholder 자리에 넣어준다. 이제 페이지는 상호작용이 가능해진다.

즉, 서버에서 처리 없이 클라이언트로 보내주기 때문에 자바스립트가 모두 다운로드 되고 실행이 끝나기 전까지 사용자는 볼
수 있는게 없다.

장점

  • 첫 로딩에 HTML과 static파일들만 다 받으면, 동적으로 빠르게 Rendering하기 때문에 사용자 UX가 뛰어나다.
  • 서버에 요청하는 횟수가 훨씬 적기 때문에 서버 부담이 덜하다.

단점

  • 모든 HTML과 static파일이 로드될 때까지 기다려야 한다.
    (리소스를 Chunk(청크) 단위로 묶어서 요청할 때만 다운받에 하는 방식으로 완화시킬 수는 있지만 해결할 수는 없다.)
  • SEO(검색엔진 최적화) 문제가 발생할 수 있다.
    (검색엔진이 크롤링을 하는데 어려움을 겪기 때문에, 구글 검색엔진은 javascript까지 크롤링을 하지만 다른 검색엔진의 경우 그렇지 않다.)

SSR

Server Side Rendering

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

위의 사진은 SSR의 단계를 설명한다.

  1. User가 Website 요청을 보냄.
  2. Server는 'Ready to Render'. 즉, 즉시 렌더링 가능한 html파일을 만든다.
    (리소스 체크, 컴파일 후 완성된 HTML 컨텐츠로 만든다.)
  3. 클라이언트에 전달되는 순간, 이미 렌더링 준비가 되어있기 때문에 HTML은 즉시 렌더링 된다. 그러나 사이트 자체는 조작 불가능하다. (Javascript가 읽히기 전이다.)
  4. 클라이언트가 자바스크립트를 다운받는다.
  5. 다운 받아지고 있는 사이에 유저는 컨텐츠는 볼 수 있지만 사이트를 조작 할 수는 없다. 이때의 사용자 조작을 기억하고 있는다.
  6. 브라우저가 Javascript 프레임워크를 실행한다.
  7. JS까지 성공적으로 컴파일 되었기 때문에 기억하고 있던 사용자 조작이 실행되고 이제 웹 페이지는 상호작용 가능해진다.

즉. 서버에서 이미 '렌더 가능한' 상태로 클라이언트에 전달되기 때문에, JS가 다운로드 되는 동안 사용자는 무언가를 보고 있을 수 있다.

장점

  • 초기 로딩 속도가 빠르기 때문에 사용자가 컨텐츠를 빨리 볼 수 있다.
  • 모든 검색엔진에 대한 SEO(검색엔진 최적화)가 가능하다.

단점

  • 매번 페이지를 요청할 때마다 새로고침 되기 때문에 사용자 UX가 다소 떨어진다.
  • 서버에 매번 요청을 하기 때문에 트래픽, 서버 부하가 커진다.

References

[ 기술 스터디 ] SSR과 CSR의 차이
CSR, SSR

post-custom-banner

0개의 댓글