[Next.js] getStaticProps vs getServerSideProps 완벽 비교

2025. 6. 15. 10:00·프로그래밍/Next.js

[Next.js] getStaticProps vs getServerSideProps 완벽 비교

Next.js는 페이지 단위로 데이터 패칭 전략을 선택할 수 있습니다.
그중 가장 자주 쓰이는 함수는 getStaticProps와 getServerSideProps입니다.

이번 글에서는 두 함수의 차이점과 선택 기준을 예제와 함께 정리해봅니다.


✅ 1. getStaticProps - 정적 생성 (SSG)

getStaticProps는 빌드 타임에 데이터를 가져와 정적 HTML을 생성합니다.
한 번 빌드하면 그 내용은 CDN에 배포되며, 모든 유저가 동일한 HTML을 받습니다.

export async function getStaticProps() {
  const data = await fetchData(); // API 호출 등
  return {
    props: {
      data
    }
  };
}
  • 페이지 속도가 매우 빠름 (정적 HTML)
  • 변하지 않는 콘텐츠에 적합 (블로그, 마케팅 페이지 등)
  • 배포 전 데이터가 준비되어 있어야 함

✅ 2. getServerSideProps - 서버 사이드 렌더링 (SSR)

getServerSideProps는 요청이 올 때마다 서버에서 HTML을 생성합니다.
항상 최신 데이터를 반영해야 할 때 유용합니다.

export async function getServerSideProps(context) {
  const data = await fetchData();
  return {
    props: {
      data
    }
  };
}
  • 항상 최신 데이터 제공
  • 로그인/세션 기반 페이지에 적합
  • 매 요청마다 서버 로딩이 필요 → 성능 이슈 주의

✅ 3. 선택 기준 비교

항목 getStaticProps getServerSideProps
렌더링 시점 빌드 타임 요청 시마다
페이지 속도 매우 빠름 느릴 수 있음
최신 데이터 불가능 (단, ISR 활용 가능) 가능
캐싱 CDN 활용 가능 불가능 (서버 요청 필요)
적합한 용도 정적인 블로그, 제품 소개 로그인, 실시간 대시보드

✅ 4. 예제 비교

// SSG
export async function getStaticProps() {
  const post = await getPostData();
  return { props: { post } };
}

// SSR
export async function getServerSideProps() {
  const user = await getUserData();
  return { props: { user } };
}

동일한 UI라도 데이터 성격에 따라 SSG or SSR 중 선택할 수 있습니다.


📌 마무리

getStaticProps는 빠르고 캐싱에 유리하며, getServerSideProps는 실시간성에 강점이 있습니다.

프로젝트 요구사항에 따라 렌더링 전략을 고르면 퍼포먼스와 UX를 모두 잡을 수 있습니다.

반응형
저작자표시 비영리 (새창열림)

'프로그래밍 > Next.js' 카테고리의 다른 글

[Next.js] 라우팅 완전 정복 정적/동적 페이지부터 Link까지  (0) 2025.06.14
[Next.js] 왜 써야 할까? – SSR, SSG, SEO에 강한 리액트 프레임워크  (2) 2025.06.11
'프로그래밍/Next.js' 카테고리의 다른 글
  • [Next.js] 라우팅 완전 정복 정적/동적 페이지부터 Link까지
  • [Next.js] 왜 써야 할까? – SSR, SSG, SEO에 강한 리액트 프레임워크
큐레이트
큐레이트
저의 일상을 기록하는 블로그입니다.
  • 큐레이트
    큐레이트의 기록
    큐레이트
  • 전체
    오늘
    어제
    • 분류 전체보기 (196)
      • 국내여행 (37)
        • 애견여행 (33)
        • 맛집여행 (2)
      • 프로그래밍 (88)
        • C# (24)
        • Python (27)
        • Flutter (5)
        • .NET (4)
        • ASP (7)
        • Next.js (3)
        • Html (5)
        • Tomcat (2)
        • typescript (3)
        • etc (8)
      • 일상생활 (71)
        • 다이어트일지 (70)
        • 기타 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 복이랑스마트스토어
    • 복이랑블로그
  • 공지사항

    • 블로그 소개
  • 인기 글

  • 태그

    애견동반
    오운완
    Flutter
    다이어트
    iis
    자동화
    헬스
    파이썬
    운동일지
    Python
    티스토리챌린지
    DevExpress
    웹개발
    FastAPI
    체중기록
    C#
    제주도애견동반여행
    식단관리
    애견동반여행
    다이어트 일지
    일상생활
    HTML
    국내여행
    애견여행
    pt
    자동매매
    다이어트일지
    식단
    제주도
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
큐레이트
[Next.js] getStaticProps vs getServerSideProps 완벽 비교
상단으로

티스토리툴바