SSR (Server-Side Rendering)
1. 개념
Server-Side Rendering(서버 사이드 렌더링)은 웹 페이지의 HTML 콘텐츠를 서버에서 렌더링한 후 클라이언트(웹 브라우저)에 전달하는 렌더링 방식입니다. 클라이언트는 서버에서 전달받은 완전한 HTML을 그대로 렌더링하여 화면에 표시합니다.
2. 특징
- 초기 로드 속도 향상: 서버에서 이미 렌더링된 HTML을 제공하기 때문에, 클라이언트가 화면을 표시하는 데 걸리는 시간이 빠릅니다.
- SEO(검색 엔진 최적화) 우수: HTML 콘텐츠가 서버에서 렌더링되므로 검색 엔진 크롤러가 쉽게 콘텐츠를 인덱싱할 수 있습니다.
- 초기 데이터 포함: 클라이언트가 데이터를 따로 요청할 필요 없이, 서버에서 데이터를 포함한 HTML을 직접 제공.
3. 동작 방식
- 클라이언트가 페이지 요청을 서버에 보냄.
- 서버는 필요한 데이터를 가져와 HTML 페이지를 렌더링.
- 완전한 HTML 페이지를 클라이언트에 전달.
- 클라이언트는 HTML을 받아 즉시 화면에 표시.
4. 장점
- 빠른 초기 로드: 완성된 HTML을 전달하므로 첫 화면 로드가 빠름.
- SEO 친화적: 검색 엔진이 콘텐츠를 쉽게 크롤링하고 인덱싱 가능.
- 낮은 클라이언트 의존성: 브라우저의 JavaScript 실행에 의존하지 않음.
5. 단점
- 서버 부하 증가: 서버에서 HTML 렌더링과 데이터 처리를 모두 수행해야 하므로 부하가 큼.
- 복잡한 구현: 클라이언트와 서버 간의 데이터 동기화 및 상태 관리가 복잡.
- 느린 인터랙션: 페이지 전환 시마다 서버에 요청해야 하므로 클라이언트-서버 간 요청이 빈번해질 수 있음.
6. 주요 사용 사례
- SEO가 중요한 웹사이트: 블로그, 뉴스 사이트, 전자상거래 사이트.
- 초기 로딩 속도가 중요한 서비스: 사용자 유입이 많은 콘텐츠 중심 웹 애플리케이션.
CSR (Client-Side Rendering)
1. 개념
Client-Side Rendering(클라이언트 사이드 렌더링)은 **클라이언트(브라우저)**에서 JavaScript를 실행해 화면을 렌더링하는 방식입니다.
서버는 기본적인 HTML과 JavaScript 파일만 제공하고, 브라우저가 이를 다운로드한 후 실행하여 화면을 동적으로 구성합니다.
2. 동작 방식
- 클라이언트가 서버에 요청을 보냄.
- 서버는 기본 HTML(스켈레톤)과 JavaScript를 전달.
- 클라이언트는 JavaScript를 실행하여 필요한 데이터를 API로 요청하고, DOM을 동적으로 생성.
- 화면에 콘텐츠가 표시됨.
3. 특징
- SPA(Single Page Application) 기반: 한 번 로드된 페이지 내에서 자바스크립트를 통해 동적으로 콘텐츠를 갱신.
- 상태 관리 필요: 브라우저 내에서 상태를 유지하며 사용자 경험을 제공.
4. 장점
- 빠른 인터랙션: 페이지 전환이 서버 요청 없이 클라이언트에서 처리됨.
- 서버 부하 감소: 서버는 정적인 파일만 제공하면 됨.
- 모던 웹 애플리케이션: React, Vue, Angular 등의 라이브러리/프레임워크와 잘 맞음.
5. 단점
- SEO 제한: 검색 엔진이 JavaScript를 실행하지 않으면 콘텐츠를 크롤링하지 못함.
- 초기 로드 속도 느림: JavaScript 로드 및 실행이 완료된 후에 화면 렌더링.
- 복잡한 클라이언트 코드: 상태 관리와 데이터 처리가 모두 클라이언트에 집중되므로 코드 복잡성이 증가.
6. 주요 사용 사례
- 동적인 인터페이스가 중요한 웹 애플리케이션: 대시보드, 소셜 미디어 플랫폼.
- SPA(Single Page Application) 기반 서비스: React, Vue.js, Angular 등으로 구현된 웹 애플리케이션.
SSR과 CSR 활용 사례 요약
- SSR: 초기 로딩 속도 및 SEO가 중요한 웹사이트(블로그, 뉴스, 전자상거래 사이트).
- CSR: 사용자와의 상호작용이 많고, SPA로 설계된 애플리케이션(대시보드, 소셜 미디어).
'CS' 카테고리의 다른 글
Web Server Vs WAS (1) | 2025.01.08 |
---|---|
GitHub - Token , 2단계 인증 (0) | 2024.12.12 |
RSA - 보안 알고리즘에 대해 이해 (0) | 2024.12.08 |
HTTP 상태 코드 정리 (1) | 2024.12.06 |
JWT 에 대한 개념 (1) | 2024.12.04 |