Server-Side Rendering, 서버 사이드 렌더링
웹 애플리케이션에서 서버에서 HTML을 렌더링하여 클라이언트에게 전달하는 기술
전통적인 CSR과 비교해보면, SSR은 브라우저가 초기 로드 시, 완전한 HTML 페이지를 받을 수 있도록 해 성능 및 SEO(검색 엔진 최적화) 면에서 이점을 제공
사용자 요청: 사용자가 웹 브라우저에서 특정 URL을 요청
서버 처리: 서버는 해당 요청을 처리해 필요한 데이터를 가져오고, HTML 페이지를 생성
HTML 전달: 생성된 HTML 페이지가 클라이언트(브라우저)로 전달됨
클라이언트 렌더링: 브라우저는 전달받은 HTML을 렌더링하고, 이후 Javascript가 활성화되어 페이지와 상호 작용이 가능해짐
장점
빠른 초기 로드
SEO 친화적
저사양 디바이스 지원
단점
서버 부하 증가
복잡한 설정
페이지 전환 속도
Incremental Static Regeneration (Next.js에서 제공하는 렌더링 방식)
정적 생성(Static Generation)과 동적 콘텐츠 업데이트의 장점을 결합한 기능
특정 페이지를 빌드 시, 정적으로 생성하지만 이후에 백그라운드에서 재생성을 통해 콘텐츠 업데이트 가능
블로그 게시글
eCommerce 제품 페이지
방식 | 설명 | 장점 | 단점 |
---|---|---|---|
SSG | 빌드 시 정적 HTML 생성 | 빠르고 안정적 | 빌드 이후 업데이트 불가 |
SSR | 요청 시 서버에서 HTML 생성 | 실시간 데이터 반영 | 느리고 서버 부하 |
ISR | 빌드 시 정적 HTML 생성 + 정기적 재생성 | SSG와 SSR의 장점 결합 | 복잡도 증가 |
1. 서버 사이드 렌더링: 서버에서 HTML을 렌더링하여 브라우저에 전달하고, 클라이언트에서 React 애플리케이션으로 동작을 이어갈 때 사용됨
2. React의 동적 기능 활성화: 서버에서 생성된 HTML에는 React 상태 관리, 이벤트 핸들러가 포함되지 않음
3. 클라이언트에서 추가적인 렌더링 방지: hydrateRoot는 서버에서 생성된 HTML과 클라이언트의 React 트리를 비교하며, 재렌더링을 최소화 (초기 로딩 성능을 개선 가능)
4. React 18의 새로운 동시성 기능 활용: React의 Concurrent Mode를 지원 (동시성 활용해 UI 업데이트를 더 효율적으로 처리 가능)
1. 서버에서 제공된 HTML과 클라이언트 React 상태 일치: 서버에서 렌더링된 HTML과 클라이언트에서 초기화된 React 상태가 다르면, React는 이를 경고하고 DOM을 수정
2. Strict Mode 사용하기
3. 동적 데이터: 서버에서 렌더링된 데이터가 시간이 지나면서 변경될 경우, 클라이언트와 동기화하는 추가 로직이 필요