개발자
Next.JS generateMetadata에서 fetch를 한번 진행하면 prefetch를 하지 않아도 되는건지 궁금합니다. 현재는 사진과 같은 코드처럼 사용하고 있는데, 문득 generateMetadata가 실행될 때 한번 fetching이 이루어지기 때문에 컴포넌트단에서 prefetch를 시켜주지 않아도 된다고 생각했는데, 맞을까요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 04월 15일
`generateMetadata` 함수는 이름에서 유추할 수 있듯이, 특정 데이터를 가져와서 metadata를 생성하는 역할을 합니다. 이런 경우 대부분 서버사이드 렌더링(SSR) 혹은 정적 사이트 생성(SSG)을 위해 사용됩니다. Next.js의 `fetch`나 `react-query`의 `prefetch`는 비유하면 데이터 베이스에서 필요한 정보를 '미리 불러와서' 캐싱하는 것과 같습니다. 따라서, `generateMetadata()`가 실행될 때 한 번 fetching이 되어 데이터를 불러오긴 하지만, 그 정보가 변경되거나 할 경우에 다시 해당 정보를 요청해서 최신 상태로 업데이트 해야합니다. 이럴 때 prefetching이 유용하게 쓰입니다. 즉, `generateMetadata()`에서 fetch를 진행하더라도 컴포넌트에서 prefetching을 하지 않으면 해당 페이지에 첫 방문한 사용자는 최신 정보를 보지 못할 수 있습니다. 따라서 기본적으로 컴포넌트 단에서 prefetch 처리는 필수적입니다. 하지만 이미 한번 fetch된 데이터로 충분하고 추가적인 실시간성 업데이트가 필요 없다면 생략해도 됩니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!