Rendering?
렌더링은 브라우저 화면에 웹 페이지를 그리는 것.
유저가 브라우저를 통해 서버에 요청을 보내고, 서버는 이에 응답으로 HTML, CSS, JavaScript를 보내줍니다. 브라우저는 이를 해석하여 웹 페이지를 그립니다.
웹 브라우저 Rendering 절차
브라우저가 화면에 그리는 과정CRP
(Critical Rendering Path)
Render Tree = DOM Tree + CSSOM Tree
Render Tree -> Layout(ReFlow) -> Paint(RePaint)
Rendering 방식(SSG, SSR, CSR)
웹 애플리케이션에서 HTML 콘텐츠를 생성하고 클라이언트에 전달하는 방법 HTML과 데이터의 생성 위치 및 시점에 따라 구분
![]()
- SSG(Static Site Generation) : 정적 사이트 생성 방식
- 시점
빌드타임에 HTML을 생성.
즉, 배포 전에 미리 HTMl을 생성하여 정적 파일로 저장하고, 이를 요청 시 그대로 클라이언트에 전달.- 특징
정적 파일이므로 빠르고 안정적. SEO에 유리함. 데이터 변경 시 재배포 필요
![]()
SSR(Server-Side Rendering) : 서버 측 렌더링 방식
- 시점
요청 시점(Runtime)에 서버가 HTML을 동적으로 생성. 서버에서 데이터를 가져와 html을 렌더링한 후 클라이언트에 전달.- 특징
초기 로드 시 완성된 HTML이 제공되므로 SEO에 유리.
동적인 데이터 처리 가능.
서버 부하가 클 수 있음(요청마다 HTML 생성)
![]()
- CSR(Client-Side Rendering) : 클라이언트 측 렌더링 방식
- 시점
클라이언트 측에서 렌더링.
서버에서 빈 HTML(혹은 최소한의 HTML)과 JavaScript를 전달하고, JavaScript가 브라우저에서 실행되어 콘텐츠를 렌더링- 특징
서버 부하가 낮고 동적인 경험 제공 가능.
초기 로딩이 느리며, SEO가 불리(JS 실행 후 콘텐츠 렌더링)
웹 애플리케이션이 브라우저에 어떻게 콘텐츠를 렌더링하고 사용자에게 제공하는지를 설명하는 패턴이나 접근 방식을 의미합니다.
정적 웹사이트는 서버에서 이미 만들어진 HTML 파일을 그대로 전달하는 방식입니다
페이지마다 새로 HTML을 요청하고 화면을 다시 그리는 방식으로 작동하는 전통적인 웹 방식입니다.
초기 로딩 시 전체 앱을 불러오고, 이후에는 필요한 데이터만 받아서 업데이트하는 방식입니다.
서버에서 초기 HTML을 생성하고, 클라이언트에서 JavaScript로 동작을 활성화하는 방식입니다.
하이드레이션이란?
Hydration 은 SSG, SSR 장점 위에 CSR 장점을 얹기 위한 방법이다
정적 웹사이트(SSG)처럼 HTML을 미리 만들어 저장해두고, 클라이언트에서 JavaScript로 동적 기능을 추가하는 방식입니다.
사용자가 요청하면 CDN에서 기존에 생성된 정적 페이지를 즉시 제공하고, CDN은 서버에 비동기로 요청을 보내어 필요시 새로운 정적 페이지를 생성하거나 업데이트합니다. 이렇게 함으로써 사용자 경험을 유지하면서도 콘텐츠를 점진적으로 최신 상태로 유지할 수 있습니다.
패턴 | 초기 HTML 생성 위치 | 데이터 업데이트 | SEO | 동적 경험 |
---|---|---|---|---|
Static Websites | 빌드 타임 (SSG) | 재배포 필요 | 우수 | 불가 |
MPA (SSR) | 서버 (요청 시점) | 즉시 가능 | 우수 | 불가 (페이지 새로고침) |
SPA (CSR) | 클라이언트 | 즉시 가능 | 불리 | 매우 우수 |
SSR with Hydration | 서버 + 클라이언트 | 즉시 가능 | 우수 | 우수 |
SSG with Hydration | 빌드 타임 + 클라이언트 | 재배포 필요 | 우수 | 우수 |
ISR | 빌드 타임 + 요청 시점 | 일부 가능 | 우수 | 우수 |