revalidatePath
revalidatePath
ermöglicht es Ihnen, gecachte Daten bei Bedarf für einen bestimmten Pfad zu löschen.
Wissenswert:
revalidatePath
ist in beiden Node.js- und Edge-Runtimes verfügbar.revalidatePath
invalidiert den Cache nur, wenn der angegebene Pfad das nächste Mal aufgerufen wird. Das bedeutet, dass der Aufruf vonrevalidatePath
mit einem dynamischen Routensegment nicht sofort viele Revalidierungen auslöst. Die Invalidierung erfolgt erst beim nächsten Aufruf des Pfads.
Parameter
revalidatePath(path: string, type?: 'page' | 'layout'): void;
path
: Entweder ein String, der den Dateisystempfad der zu revalidierenden Daten darstellt (z.B./product/[slug]/page
), oder das literale Routensegment (z.B./product/123
). Muss weniger als 1024 Zeichen lang sein.type
: (optional) String'page'
oder'layout'
, um den Typ des zu revalidierenden Pfads anzugeben.
Rückgabewert
revalidatePath
gibt keinen Wert zurück.
Beispiele
Revalidierung einer spezifischen URL
import { revalidatePath } from 'next/cache'
revalidatePath('/blog/post-1')
Dies revalidiert eine bestimmte URL beim nächsten Seitenaufruf.
Revalidierung eines Seitenpfads
import { revalidatePath } from 'next/cache'
revalidatePath('/blog/[slug]', 'page')
// oder mit Routengruppen
revalidatePath('/(main)/post/[slug]', 'page')
Dies revalidiert alle URLs, die der angegebenen page
-Datei entsprechen, beim nächsten Seitenaufruf. Dies invalidierte nicht Seiten unterhalb der spezifischen Seite. Zum Beispiel würde /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 revalidiert alle URLs, die der angegebenen layout
-Datei entsprechen, beim nächsten Seitenaufruf. Dadurch werden auch Seiten unterhalb mit demselben Layout beim nächsten Aufruf revalidiert. Im obigen Fall würde beispielsweise /blog/[slug]/[another]
ebenfalls beim nächsten Aufruf revalidiert.
Server-Aktion
'use server'
import { revalidatePath } from 'next/cache'
export default async function submit() {
await submitForm()
revalidatePath('/')
}
Route-Handler
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',
})
}
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: 'Missing path to revalidate',
})
}