export const dynamic = 'force-dynamic'의 역할과 사례

KUKJIN LEE's profile picture

KUKJIN LEE9시간 전 작성

Next.js 13부터 렌더링 방식을 제어할 수 있는 새로운 설정이 도입되었습니다. export const dynamic = 'force-dynamic'을 사용하면 해당 페이지나 API 라우트를 항상 서버 측에서 동적으로 렌더링하도록 강제할 수 있습니다.

특정 페이지가 항상 최신 데이터를 반영해야 할 때 유용합니다. 기본적으로 Next.js는 정적으로 렌더링할 수 있는 페이지를 빌드 시 정적 HTML로 생성하지만, force-dynamic을 설정하면 매 요청마다 새로운 HTML이 생성됩니다.

 

dynamic: 'force-dynamic'이 필요한 상황

  • 실시간 데이터 업데이트: 자주 변경되는 데이터를 반영해야 하는 경우. 예를 들어, 실시간 데이터가 필요한 페이지.

  • 사용자 맞춤 정보 제공: 각 사용자마다 다른 데이터를 보여줘야 할 때. 로그인한 사용자별로 서로 다른 콘텐츠를 제공해야 하는 페이지.

  • 변경 사항 반영: 페이지가 빌드 시점의 데이터로 고정되지 않고, 최신 상태를 항상 보여줘야 하는 경우.

 

사용 예시

// app/dashboard/page.jsx
export const dynamic = 'force-dynamic';

export default function Dashboard() {
  // 이 컴포넌트는 항상 서버에서 동적으로 렌더링됩니다.
  return <div>동적 대시보드 페이지</div>;
}

위 예시에서, dynamic = 'force-dynamic' 설정으로 인해 대시보드 페이지는 빌드 시 정적으로 생성되지 않으며, 매번 서버 요청이 있을 때마다 동적으로 HTML이 생성됩니다. 이를 통해 사용자는 항상 최신 데이터를 볼 수 있습니다.

 

다른 옵션과의 비교

  • dynamic = 'auto' (기본값): Next.js가 페이지를 정적으로 생성 가능한지 자동으로 판단하여 정적 또는 동적 렌더링을 선택합니다.

  • dynamic = 'force-static': 해당 페이지를 항상 정적으로 생성하도록 강제합니다. 정적 콘텐츠를 제공하여 성능을 최적화할 때 유용합니다.

 

주의사항

  • 성능 고려: 동적 렌더링은 매 요청마다 새로운 HTML을 생성하기 때문에, 트래픽이 높은 페이지에서는 서버에 부하가 갈 수 있습니다.

 

export const dynamic = 'force-dynamic'은 Next.js에서 항상 최신 데이터를 반영해야 하는 페이지를 구축할 때 유용한 설정입니다. 동적 렌더링이 필요한 경우에만 사용하고, 성능에 미치는 영향을 고려하여 적절한 캐싱 전략과 함께 사용하는 것이 중요합니다.

New Tech Posts