Menu

revalidatePath

revalidatePath ermöglicht es Ihnen, zwischengespeicherte Daten bei Bedarf für einen bestimmten Pfad zu löschen.

Hinweis:

  • revalidatePath ist sowohl in Node.js- als auch Edge-Laufzeitumgebungen verfügbar.
  • revalidatePath invalidiert den Cache nur, wenn der enthaltene Pfad beim nächsten Besuch aufgerufen wird. Das bedeutet, dass der Aufruf von revalidatePath mit einem dynamischen Routensegment nicht sofort viele Neuladevorträge auslöst. Die Invalidierung erfolgt erst, wenn der Pfad das nächste Mal besucht wird.
  • Derzeit invalidiert revalidatePath alle Routen im Client-seitigen Router-Cache. Dieses Verhalten ist vorübergehend und wird in Zukunft so aktualisiert, dass es nur für den spezifischen Pfad gilt.
  • Die Verwendung von revalidatePath invalidiert nur den spezifischen Pfad im serverseitigen Routen-Cache.

Parameter

revalidatePath(path: string, type?: 'page' | 'layout'): void;
  • path: Entweder eine Zeichenfolge, die den Dateisystempfad repräsentiert, der mit den zu revalidierenden Daten verknüpft ist (z.B. /product/[slug]/page), oder das literale Routensegment (z.B. /product/123). Muss weniger als 1024 Zeichen sein. Dieser Wert unterscheidet zwischen Groß- und Kleinschreibung.
  • type: (optional) 'page' oder 'layout'-Zeichenfolge, um den zu revalidierenden Pfadtyp zu ändern. Wenn path ein dynamisches Segment enthält (z.B. /product/[slug]/page), ist dieser Parameter erforderlich. Wenn der Pfad auf das literale Routensegment verweist, z.B. /product/1 für eine dynamische Seite (z.B. /product/[slug]/page), sollten Sie type nicht angeben.

Rückgabewert

revalidatePath gibt keinen Wert zurück.

Beispiele

Revalidierung einer bestimmten URL

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

Dies wird eine bestimmte URL beim nächsten Seitenaufruf revalidieren.

Revalidierung eines Seitenpfads

import { revalidatePath } from 'next/cache'
revalidatePath('/blog/[slug]', 'page')
// oder mit Routengruppen
revalidatePath('/(main)/blog/[slug]', 'page')

Dies wird jede URL revalidieren, die zur angegebenen page-Datei passt, beim nächsten Seitenaufruf. Dies wird Seiten unter dem spezifischen Pfad nicht invalidieren. Beispielsweise wird /blog/[slug] nicht /blog/[slug]/[author] invalidieren.

Revalidierung eines Layout-Pfads

import { revalidatePath } from 'next/cache'
revalidatePath('/blog/[slug]', 'layout')
// oder mit Routengruppen
revalidatePath('/(main)/post/[slug]', 'layout')

Dies wird jede URL revalidieren, die zur angegebenen layout-Datei passt, beim nächsten Seitenaufruf. Dies wird Seiten darunter mit demselben Layout revalidieren. Im obigen Fall würde beispielsweise /blog/[slug]/[another] beim nächsten Aufruf ebenfalls revalidiert werden.

Revalidierung aller Daten

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

Dies wird den Client-seitigen Router-Cache leeren und den Daten-Cache beim nächsten Seitenaufruf revalidieren.

Server-Aktion

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

Routen-Handler

app/api/revalidate/route.ts
import { revalidatePath } from 'next/cache'
import type { 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: 'Fehlender Pfad zur Revalidierung',
  })
}
app/api/revalidate/route.js
import { revalidatePath } from 'next/cache'
 
export async function GET(request) {
  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: 'Fehlender Pfad zur Revalidierung',
  })
}