revalidatePath
revalidatePath
vous permet de purger les données en cache à la demande pour un chemin spécifique.
Bon à savoir :
revalidatePath
est disponible dans les environnements d'exécution Node.js et Edge.revalidatePath
n'invalide le cache que lorsque le chemin inclus est visité ensuite. Cela signifie qu'appelerrevalidatePath
avec un segment de route dynamique ne déclenchera pas immédiatement de nombreuses revalidations à la fois. L'invalidation se produit uniquement lorsque le chemin est visité ensuite.- Actuellement,
revalidatePath
invalide toutes les routes dans le cache du routeur côté client. Ce comportement est temporaire et sera mis à jour à l'avenir pour s'appliquer uniquement au chemin spécifique.- L'utilisation de
revalidatePath
invalide uniquement le chemin spécifique dans le cache de route côté serveur.
Paramètres
revalidatePath(path: string, type?: 'page' | 'layout'): void;
path
: Une chaîne représentant le chemin du système de fichiers associé aux données que vous souhaitez revalider (par exemple,/product/[slug]/page
), ou le segment de route littéral (par exemple,/product/123
). Doit comporter moins de 1024 caractères. Cette valeur est sensible à la casse.type
: (optionnel) Chaîne'page'
ou'layout'
pour modifier le type de chemin à revalider. Sipath
contient un segment dynamique (par exemple,/product/[slug]/page
), ce paramètre est requis.
Valeur de retour
revalidatePath
ne retourne aucune valeur.
Exemples
Revalidation d'une URL spécifique
import { revalidatePath } from 'next/cache'
revalidatePath('/blog/post-1')
Cela revalidera une URL spécifique lors de la prochaine visite de la page.
Revalidation d'un chemin de page
import { revalidatePath } from 'next/cache'
revalidatePath('/blog/[slug]', 'page')
// ou avec des groupes de routes
revalidatePath('/(main)/post/[slug]', 'page')
Cela revalidera toute URL correspondant au fichier page
fourni lors de la prochaine visite de la page. Cela n'invalidera pas les pages situées sous la page spécifique. Par exemple, /blog/[slug]
n'invalidera pas /blog/[slug]/[author]
.
Revalidation d'un chemin de layout
import { revalidatePath } from 'next/cache'
revalidatePath('/blog/[slug]', 'layout')
// ou avec des groupes de routes
revalidatePath('/(main)/post/[slug]', 'layout')
Cela revalidera toute URL correspondant au fichier layout
fourni lors de la prochaine visite de la page. Cela entraînera la revalidation des pages situées sous le même layout lors de la prochaine visite. Par exemple, dans le cas ci-dessus, /blog/[slug]/[another]
serait également revalidé lors de la prochaine visite.
Revalidation de toutes les données
import { revalidatePath } from 'next/cache'
revalidatePath('/', 'layout')
Cela purgera le cache du routeur côté client et revalidera le cache de données lors de la prochaine visite de la page.
Action serveur
'use server'
import { revalidatePath } from 'next/cache'
export default async function submit() {
await submitForm()
revalidatePath('/')
}
Gestionnaire de route
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',
})
}