오개념 바로잡기
최근 CS 스터디를 하면서 기존에 알고 있던 CSR, SSR 지식이 잘못 됐음을 깨달았다.
처음 생각한 CSR과 SSR 방식은 아래와 같았다.
CSR
1. 클라이언트 측에 HTML 뼈대는 바로 와서 일단 렌더링 됨
2. 이후 필요한 자바스크립트가 실행 되어 추가 데이터가 뼈대의 살을 채움
(createElement 로 태그 추가하는 식으로)
SSR
1. 일단 하얀 화면으로 대기
2. 서버에서 HTML, JS, CSS 입혀서 완성된 HTML 을 만들어서 클라이언트로 제공
하지만 CS 스터디를 진행하면서 공부해본 결과 잘못 알고 있었고, 이에 대해 정리해보려고 한다.
CSR, SSR 에 대한 설명
CSR (Client Side Rendering)
이름대로 렌더링이 클라이언트 측에서 일어난다.
위 그림에서 빨간 박스 영역은 빈 화면이라고 생각해도 좋다.
렌더링 과정은 아래와 같다.
- 클라이언트가 서버로 요청을 보낸다.
- 서버에서 응답으로 빈 HTML 페이지와 필요한 CSS, JS 파일들을 받는다.
- 브라우저는 받은 HTML 을 해석하고, 초기 화면을 렌더링한다. (빈 화면)
- 브라우저는 필요한 CSS, 이미지 등의 자원 및 JS 파일들을 다운로드하고 실행한다.
- JavaScript가 실행되면 클라이언트는 서버에 데이터를 요청한다.
- 받은 데이터를 사용하여 동적으로 페이지를 완성하고, 화면을 갱신한다.
SSR (Server Side Rendering)
이름대로 서버에서 렌더링 준비를 마친 상태의 HTML 을 클라이언트로 내려준다.
위 그림에서 빨간 박스 영역은 빈 화면이라고 생각해도 좋다.
렌더링 과정은 아래와 같다.
- 클라이언트가 서버로 요청을 보낸다.
- 서버에서 응답으로 렌더링 준비를 마친 HTML 페이지를 받는다.
- 브라우저는 받은 HTML을 해석하고, 초기 화면을 렌더링한다. (기본 뼈대, JS 같은 동작은 안함)
- 브라우저는 필요한 CSS, 이미지 등의 자원 및 JS 파일들을 다운로드하고 실행한다.
- JavaScript가 실행되면 클라이언트는 초기에 받은 HTML에 이미 포함된 데이터를 사용하므로,
데이터를 서버에 요청하지 않고 화면을 갱신한다.
CSR, SSR 의 차이점 비교
1. 웹 페이지 로딩 시간
페이지 로딩 시간은 첫 화면 로딩과 페이지 이동 시의 로딩 시간으로 나눌 수 있다.
첫 페이지 로딩 시간
CSR은 HTML, CSS와 모든 페이지의 JS 파일들을 한 번에 불러온다.
반면 SSR은 필요한 부분의 HTML과 스크립트만 불러오므로 상대적으로 SSR 의 속도가 더 빠르다.
페이지 이동 시의 로딩 시간
CSR은 이미 첫 페이지 로딩할 때 나머지 페이지를 구성하는 코드를 받아왔기 때문에 페이지 이동 시 속도가 빠르다.
반면 SSR은 모든 페이지에서 위에서 설명한 로딩 과정을 거치므로 더 느리다.
2. SEO 최적화
CSR 의 초기 HTML에는 제한된 내용만 포함되어 있어 SEO에 취약하다.
반면 SSR 은 초기에 서버에서 완전한 HTML을 제공하므로 SEO에 유리하다.
3. 서버 자원 사용
CSR 은 클라이언트에서 페이지를 렌더링하므로 서버의 부하가 적다.
반면 SSR 은 서버에서 매 요청마다 렌더링 가능한 HTML 을 만들어야 하므로 서버 자원을 더 많이 소모한다.
'CS' 카테고리의 다른 글
Process 와 Thread (0) | 2023.10.05 |
---|---|
클라이언트와 서버 (0) | 2023.04.03 |
MSA(Microservice Architecture)란? (0) | 2023.03.29 |
의존성 주입(Dependency Injection) 이란? (0) | 2023.03.28 |
OOP 3: SOLID 객체 지향 설계 5원칙 (0) | 2023.03.28 |