프론트엔드 개발 · 중급
App Router 환경에서 fetch API를 사용할 때, 캐싱을 비활성화하고 매 요청마다 서버에서 동적으로 데이터를 가져오게 하려면 옵션을 어떻게 설정하나요?
힌트 · fetch 함수의 두 번째 인자에 `{ cache: 'no-store' }` 옵션을 전달합니다.
cache: 'no-store'revalidate: 0dynamicSSRServer Components
모범답안
App Router 환경에서 fetch API를 사용할 때 캐싱을 비활성화하고 매 요청마다 서버에서 데이터를 가져오려면 cache: 'no-store' 옵션을 사용합니다.
fetch 함수의 두 번째 인자로 { cache: 'no-store' }를 전달하면 Next.js는 해당 요청에 대한 응답을 캐싱하지 않습니다. 이렇게 하면 서버 컴포넌트에서 데이터를 가져올 때 항상 최신 데이터를 가져올 수 있습니다.
const data = await fetch('api/data', { cache: 'no-store' });
또 다른 방법으로는 revalidate: 0을 사용하는 방법도 있지만, cache: 'no-store'가 캐싱을 완전히 비활성화하는 더 확실한 방법입니다. dynamic 키워드를 사용하여 페이지 또는 컴포넌트를 dynamic rendering하도록 설정하는 것도 같은 효과를 낼 수 있습니다. SSR 환경에서 데이터를 동적으로 가져올 때 유용합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Next.js 면접 질문
- 프로덕션 환경을 위한 빌드 및 실행 명령어는 무엇인가요?
- App Router의 Server Component에서 Client Component로 Props를 전달할 때 발생할 수 있는 직렬화(Serialization) 에러의 원인은 무엇인가요?
- Client Component 경계 내부에서 Server Component를 직접 import하여 자식으로 사용할 때 발생하는 문제는 무엇이며, 이를 우회하는 패턴은 무엇인가요?
- App Router에서 특정 경로의 동적 렌더링 여부를 파일 레벨에서 강제하기 위해 export하는 Route Segment Config 변수와 값은 무엇인가요?
- Next.js Middleware(`middleware.ts`)에서 특정 경로들만 미들웨어를 거치도록 적용 대상을 필터링하는 설정 객체의 속성 이름은 무엇인가요?
- Middleware 파일 내부에서 조건부로 사용자를 로그인 페이지로 리다이렉트 시키려면 어떤 클래스의 메서드를 반환해야 하나요?