Skip to content

Pre-rendering ​

사전 렌더링 (Pre-Rendering) ​

사전 렌더링은 브라우저의 요청 이전에, 서버에서 미리 HTML을 만들어 응답하는 방식이다.

  • React 앱의 느린 초기 렌더링(FCP)을 보완하고
  • 사용자가 화면을 더 빠르게 확인할 수 있게 한다.

즉, JS가 실행되기 전에 HTML로 먼저 화면을 보여준다.

🧩 FCP (First Contentful Paint)

"요청 시작" 시점으로부터 컨텐츠가 화면에 처음 나타나는데 걸리는 시간
→ 사용자가 처음으로 화면을 인식하는 시점

⚛ React의 기존 렌더링 방식: CSR

React 앱은 기본적으로 Client Side Rendering(CSR) 방식이다.
브라우저가 JavaScript를 다운로드하고 실행한 뒤, 그 결과로 화면을 렌더링한다.

  1. 서버에서 거의 비어 있는 HTML 응답
  2. 브라우저에서 JS 번들 다운로드
  3. React가 실행되며 DOM 생성
  4. 화면 렌더링
  • 장점: 초기 로딩 이후 페이지 이동이 빠르다 (SPA의 장점)
  • 단점: 첫 화면을 보기까지 오래 걸린다 (FCP 지연)

React의 데이터 페칭 (CSR) ​

React에서는 컴포넌트가 마운트된 이후에 데이터를 가져온다.
즉, 렌더링 이후에 데이터 요청이 발생하는 구조다.

jsx
export default function Page() {
  // 1. 불러온 데이터를 보관할 State 생성
  const [state, setState] = useState();

  // 2. 데이터 페칭 함수 생성
  const fetchData = async () => {
    const response = await fetch('...');
    const data = await response.json();
    setState(data);
  };

  // 3. 컴포넌트 마운트 시점에 fetchData 호출
  useEffect(() => {
    fetchData();
  }, []);

  // 4. 데이터 로딩중일때의 예외처리
  if (!state) return 'Loading...';

  return <div>...</div>;
}

특징 ​

  • 최초 렌더링 시에는 데이터가 없는 상태
  • useEffect 실행 후 데이터 요청 발생
  • 로딩 UI가 반드시 필요

한계 ​

  • 화면이 먼저 뜨고, 데이터는 나중에 도착
  • 초기 UX가 느릴 수 있음
  • 검색 엔진이 완성된 HTML을 바로 받지 못함

즉, 보여주고 → 가져오는 구조다.


Next.js의 사전 렌더링 ​

Next.js에서는 렌더링 이전에 데이터를 가져올 수 있다.
이를 사전 렌더링(Pre-rendering)이라고 한다.

특징 ​

  • 서버에서 데이터를 미리 가져옴
  • 데이터가 포함된 완성된 HTML을 생성
  • 브라우저는 완성된 페이지를 바로 받음

장점 ​

  • 첫 화면이 빠르게 보임
  • SEO에 유리
  • 로딩 UI가 필요 없는 경우도 많음

단점 ​

  • 데이터가 자주 바뀌는 경우에는 적합하지 않을 수 있음

즉, 가져오고 → 보여주는 구조다.


Next.js는 이러한 사전 렌더링 전략을 상황에 맞게 선택할 수 있도록 세 가지 렌더링 방식을 제공한다.

🧩 사전 렌더링 방식 요약

방식렌더링 시점데이터 최신성응답 속도
SSR요청 시항상 최신API 의존
SSG빌드 시빌드 시점 고정가장 빠름
ISR빌드 시 + 주기적 재생성주기적 갱신빠름

SSR (Server-Side Rendering) ​

SSR은 요청 시점마다 서버에서 HTML을 생성하는 렌더링 방식이다.
실시간 데이터가 필요한 페이지, 사용자별 개인화 페이지에 적합하다.

특징 ​

  • 매 요청마다 최신 데이터 보장
  • 사용자별 맞춤 데이터 처리 가능

단점 ​

  • 요청마다 서버 부하 발생
  • 응답 속도가 API 성능에 의존
  • 트래픽이 많을 경우 서버 비용이 빠르게 증가할 수 있음

SSG (Static Site Generation) ​

SSG는 빌드 시점에 서버가 HTML을 미리 생성하는 렌더링 방식이다.
블로그, 마케팅 페이지, 문서 사이트 등 변경이 적은 콘텐츠에 적합하다.

특징 ​

  • 빌드 시 서버에서 API 요청 후 HTML 생성
  • 요청 시 서버 연산 없이 바로 응답
  • 가장 빠른 응답 속도

단점 ​

  • 빌드 이후 데이터 변경 반영 불가
  • 데이터가 크거나 API가 느리면 빌드 시간 증가

ISR (Incremental Static Regeneration) ​

ISR은 정적 페이지를 유지하면서 일정 주기로 HTML을 재생성하는 방식이다. 완전히 실시간일 필요는 없지만, 최신에 가까운 데이터를 보여줘야 하는 콘텐츠에 적합하다.

특징 ​

  • 빌드 타임에 정적 페이지 생성
  • 설정한 주기마다 백그라운드에서 페이지 재생성
  • 정적 페이지의 성능을 유지하면서도 일정 수준의 데이터 최신성을 확보할 수 있음