Next.js 에선 Web API에서 제공되는 fetch API의 확정된 버전을 제공합니다. 덕분에 Next.js에선 fetch로 각각의 페치 요청에 대한 캐싱(Caching)과 재검증(Revalidating) 동작을 설정할 수 있다.
async function getData() {
const res = await fetch('https://api.example.com/...')
// 직렬화되지 않기 때문에 데이터 타입을 바로 사용할 수 있습니다.
if (!res.ok) {
// 에러를 던지면 가장 가까이 있는 error.tsx 파일에 걸립니다.
throw new Error('Failed to fetch data')
}
return res.json()
}
export default async function Page() {
const data = await getData()
return <main></main>
}
캐싱이란? 파일 복사본을 캐시 또는 임시 저장 위치에 저장하여 보다 빠르게 액세스할 수 있도록 하는 프로세스입니다.
// 'force-cache' 설정이 기본 값입니다.
fetch('https://...', { cache: 'force-cache' })
최신의 데이터를 원한다면 재검증을 통해 캐싱된 데이터를 무효화할 수 있습니다.
자동으로 재검증 되도록 설정할 수 있다.// 3600초(60분) 동안 유효한 fetch
fetch('https://...', { next: { revalidate: 3600 } })

수동으로 재검증할 수 있다.태그(tag) 혹은 경로(path)를 기반으로 특정 데이터 그룹을 일괄 재검증할 수 있다.// 데이터에 태그를 달아둡니다.
fetch('https://...', { next: { tags: ['collection'] } })
// 태그된 데이터를 재검증합니다.
revalidateTag('collection')
