revalidatePath

revalidatePath belirli bir yol için önbelleğe alınmış verileri isteğe bağlı olarak temizlemenizi sağlar.

Bildiğim iyi oldu:

  • revalidatePath hem Node.js hem de Edge çalışma zamanlarında kullanılabilir.
  • revalidatePath önbelleği yalnızca dahil edilen yol bir sonraki ziyarette geçersiz kılar. Bu, dinamik bir rota segmenti ile revalidatePath adresinin çağrılmasının aynı anda birçok yeniden doğrulamayı tetiklemeyeceği anlamına gelir. Geçersiz kılma işlemi yalnızca yol bir sonraki ziyaret edildiğinde gerçekleşir.

Parameters

revalidatePath(path: string, type?: 'page' | 'layout'): void;

Returns

revalidatePath herhangi bir değer döndürmez.

Examples

Revalidating A Specific URL

import { revalidatePath } from 'next/cache'
revalidatePath('/blog/post-1')

Bu, bir sonraki sayfa ziyaretinde belirli bir URL'yi yeniden doğrulayacaktır.

Revalidating A Page Path

import { revalidatePath } from 'next/cache'
revalidatePath('/blog/[slug]', 'page')
// or with route groups
revalidatePath('/(main)/post/[slug]', 'page')

Bu, bir sonraki sayfa ziyaretinde sağlanan page dosyasıyla eşleşen herhangi bir URL'yi yeniden doğrulayacaktır. Bu, belirli sayfanın altındaki sayfaları geçersiz kılmaz. Örneğin, /blog/[slug] adresi /blog/[slug]/[author] adresini geçersiz kılmaz.

Revalidating A Layout Path

import { revalidatePath } from 'next/cache'
revalidatePath('/blog/[slug]', 'layout')
// or with route groups
revalidatePath('/(main)/post/[slug]', 'layout')

Bu, bir sonraki sayfa ziyaretinde sağlanan layout dosyasıyla eşleşen herhangi bir URL'yi yeniden doğrulayacaktır. Bu, aynı düzene sahip alttaki sayfaların bir sonraki ziyarette yeniden doğrulanmasına neden olacaktır. Örneğin, yukarıdaki durumda, /blog/[slug]/[another] adresi de bir sonraki ziyarette yeniden doğrulanacaktır.

Revalidating All Data

import { revalidatePath } from 'next/cache'
 
revalidatePath('/', 'layout')

Bu, İstemci tarafı Yönlendirici Önbelleğini temizleyecek ve bir sonraki sayfa ziyaretinde Veri Önbelleğini yeniden doğrulayacaktır.

Server Action

app/actions.ts
'use server'
 
import { revalidatePath } from 'next/cache'
 
export default async function submit() {
  await submitForm()
  revalidatePath('/')
}

Route Handler

app/api/revalidate/route.ts
import { revalidatePath } from 'next/cache'
import { NextRequest } from 'next/server'
 
export async function GET(request: NextRequest) {
  const path = request.nextUrl.searchParams.get('path')
 
  if (path) {
    revalidatePath(path)
    return Response.json({ revalidated: true, now: Date.now() })
  }
 
  return Response.json({
    revalidated: false,
    now: Date.now(),
    message: 'Missing path to revalidate',
  })
}