강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

jhworld님의 프로필 이미지
jhworld

작성한 질문수

한 입 크기로 잘라먹는 Next.js(v15)

5.3) 풀 라우트 캐시 3. 동적 경로에 적용하기

generateStaticParams() 와 데이터 캐싱

해결된 질문

작성

·

80

·

수정됨

0

5.3) 풀 라우트 캐시 3. 동적 경로에 적용하기 7:20

generateStaticParams() 를 export하면 page component의 fetch() 메서드에서 명시적으로 데이터 캐싱 옵션을 설정하지 않아도 해당 페이지는 무조건 static page가 된다고 설명해주셨는데, 그럼 { cache: "force-cache" }로 되어있다고 생각하면 될까요? { cache: "force-cache" }를 안써도 되는지 궁금합니다.

또, export const dynamicParams = true 또는 false의 설정에 따라 어떤 영향을 받는지도 함께 설명해 주시면 감사하겠습니다. 🙂

 

뭔가 저는 generateStaticParams() 를 export + export const dynamicParams = true + 데이터 캐싱 옵션 설정하지 않은 경우에도 새로운 id 경로로 접속 요청이 들어왔을 때, 내부적으로{ cache: "force-cache" } 로 적용되어 데이터 캐싱이 되는지 궁금한 것 같습니다. 🤔

답변 2

0

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

결론부터 말씀드리자면 페이지가 스태틱 페이지로 전환 될 뿐 { cache: "force-cache" }와 같은 데이터 캐시가 적용되는것은 아닙니다.

그럼에도 페이지 자체가 풀라우트 캐시에 저장되기 때문에, 페이지를 다시 요청했을 때 데이터를 다시 불러오지는 않게 되는데 이는 데이터 캐시가 작동해서 그런것은 아니구요

그저 페이지를 다시 생성하지 않기 때문에 데이터 페칭도 실행 되지 않아서 그렇습니다.

0

안녕하세요, 인프런 AI 인턴입니다. jhworld님.

Next.js에서 generateStaticParams 함수는 동적 경로를 가진 페이지들을 사전 렌더링하여, 정적 HTML을 미리 생성해 두는 역할을 합니다. 이에 따라 몇 가지 중요한 사항들을 정리해보겠습니다.

1. generateStaticParams와 데이터 캐싱

generateStaticParams를 사용하면 페이지가 빌드 타임에 미리 생성되도록 정의합니다. 이 경우 데이터 캐싱 옵션을 명시적으로 { cache: "force-cache" }로 설정하지 않아도, Next.js는 해당 페이지를 정적 페이지로 처리합니다. 즉, 페이지를 빌드 시점에 미리 생성하고, 이후에 서버 요청이 발생할 때 이 미리 생성된 HTML을 전달하게 됩니다. 이는 기본적으로 정적 페이지 생성 (SSG: Static Site Generation) 이라는 Next.js의 전략에 포함됩니다.

2. dynamicParams 설정의 영향

  • export const dynamicParams = true: 이 옵션은 동적으로 들어오는 경로 파라미터에 대응하기 위한 설정입니다. 예를 들어, URL에서 동적으로 자주 변경되는 id 값이 있을 때, 이러한 동적 요청에 대한 처리 설정을 할 수 있습니다. 이 옵션이 활성화되어 있으면, 해당 경로의 동적 부분이 있을 때 예외적으로 자동으로 SSR(Server-side Rendering)로 처리될 수 있는 것입니다.

  • export const dynamicParams = false: 반대로 이 옵션은 동적 경로 파라미터가 필요하지 않거나, 페이지가 빌드 타임에 모든 가능한 경로에 대해 사전 렌더링이 완료됐다는 뜻입니다.

추가 참고자료

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

jhworld님의 프로필 이미지
jhworld

작성한 질문수

질문하기