revalidatePath

okkyung·2026년 3월 20일

nextjs

목록 보기
12/13

revalidatePath

특정 경로의 캐시를 온디맨드로 무효화하는 함수다. Server Function과 Route Handler에서만 호출할 수 있으며, Client Component와 Proxy에서는 사용할 수 없다.


파라미터

revalidatePath(path: string, type?: 'page' | 'layout'): void
  • path: 재검증할 경로. /product/123과 같은 리터럴 경로 또는 /product/[slug]와 같은 동적 세그먼트 패턴을 사용할 수 있다. 대소문자를 구분하며 최대 1024자다.
  • type: 'page' 또는 'layout'. 동적 세그먼트가 포함된 경로에서는 필수다. 리터럴 경로에서는 생략한다.

무효화 범위

  • 페이지 경로: 해당 페이지만 무효화한다.
  • 레이아웃 경로: 해당 레이아웃과 그 하위의 모든 중첩 레이아웃 및 페이지를 무효화한다.
  • 루트 경로 ('/', 'layout'): 클라이언트 캐시 전체를 초기화하고 모든 캐시 데이터를 무효화한다.
  • Route Handler 경로: 해당 핸들러 내부에서 캐싱된 데이터를 무효화한다.

동작 방식

  • Server Function에서 호출: 현재 보고 있는 경로에 해당하면 UI가 즉시 갱신된다. 이전에 방문한 페이지도 재방문 시 새로고침된다. 이 동작은 향후 특정 경로에만 적용되도록 변경될 예정이다.
  • Route Handler에서 호출: 해당 경로를 재검증 대상으로 표시한다. 실제 재검증은 다음 방문 시점에 수행된다.

rewrite 사용 시 주의사항

rewrite가 설정된 경우 브라우저에 표시되는 소스 경로가 아닌, 실제 라우트 파일 위치인 대상(destination) 경로를 전달해야 한다. revalidatePath는 URL이 아닌 라우트 파일 구조를 기준으로 동작하기 때문이다.


revalidatePath vs revalidateTag vs updateTag

  • revalidatePath: 특정 페이지 또는 레이아웃 경로를 무효화한다. 동일한 데이터 태그를 사용하는 다른 페이지에는 영향을 주지 않는다.
  • revalidateTag: 특정 태그가 지정된 데이터를 stale 상태로 표시한다. 해당 태그를 사용하는 모든 페이지에 적용된다.
  • updateTag: 특정 태그가 지정된 데이터를 즉시 만료시킨다. 해당 태그를 사용하는 모든 페이지에 적용된다.

특정 페이지와 해당 페이지가 사용하는 데이터 태그를 함께 갱신해야 할 때는 revalidatePathupdateTag를 조합하여 사용한다.

nextjs#revalidatePath

0개의 댓글