웹 페이지 렌더링 방식은 주로 CSR(Client-Side Rendering), SSR(Server-Side Rendering), SSG(Static Site Generation)으로 나뉩니다.
CSR (Client-Side Rendering)
특징:
- 초기 로딩 시 빈 HTML과 최소한의 JavaScript만 전달됨.
- 브라우저가 JavaScript를 실행하여 필요한 데이터를 서버에서 가져와 렌더링.
- 초기 로딩이 느릴 수 있지만, 이후 페이지 전환은 빠름.
- React, Vue.js 등의 SPA(Single Page Application) 프레임워크에서 주로 사용.
사용 상황:
- 인터랙티브 웹 애플리케이션: 사용자와의 상호작용이 많은 애플리케이션에 적합.
- 빠른 페이지 전환: 애플리케이션 상태가 클라이언트에 유지되어 페이지 전환이 빠름.
- 복잡한 UI/UX: 동적인 데이터 바인딩과 복잡한 사용자 인터페이스를 필요로 하는 경우.
SSR (Server-Side Rendering)
특징:
- 서버에서 완전한 HTML을 생성하여 클라이언트에 전달.
- 초기 로딩이 빠름(SEO와 초기 사용자 경험 향상).
- 브라우저에서 추가 JavaScript를 실행하여 클라이언트 측 상호작용을 활성화.
- Next.js, Nuxt.js 등 프레임워크에서 지원.
사용 상황:
- SEO가 중요한 웹사이트: 검색 엔진 최적화가 중요한 콘텐츠 중심 사이트에 적합.
- 빠른 초기 로딩: 초기 페이지 로드 속도를 개선해야 하는 경우.
- 웹사이트의 초기 렌더링: 서버에서 초기 상태를 렌더링하여 사용자가 빠르게 콘텐츠를 볼 수 있도록 해야 하는 경우.
SSG (Static Site Generation)
특징:
- 빌드 시점에 모든 페이지를 미리 렌더링하여 정적인 HTML 파일을 생성.
- 배포 후 서버는 단순히 정적 파일을 제공.
- 빌드 시간이 길 수 있지만, 런타임 성능과 보안성이 높음.
- Gatsby, Hugo, Next.js 등 프레임워크에서 지원.
사용 상황:
- 정적 콘텐츠 웹사이트: 블로그, 문서 사이트 등 변경이 적고 고정된 콘텐츠를 제공하는 사이트.
- 성능 최적화: 모든 페이지가 정적 파일로 제공되어 빠른 로딩 속도.
- 보안: 서버 측 동적 처리 로직이 없어 보안성이 높음.
- 배포 용이성: CDN을 통해 전 세계에 정적 파일을 빠르게 배포 가능.
요약
- CSR: 사용자와의 상호작용이 많은 애플리케이션, 빠른 페이지 전환 필요.
- SSR: SEO와 초기 로딩 속도가 중요한 웹사이트.
- SSG: 변경이 적은 정적 콘텐츠 웹사이트, 높은 성능과 보안 필요.
이 세 가지 렌더링 방식은 각각의 장단점이 있으며, 프로젝트의 요구사항에 따라 적절한 방식을 선택하는 것이 중요합니다.