revalidatePath
تتيح لك revalidatePath
إزالة البيانات المخزنة مؤقتًا عند الطلب لمسار معين.
معلومة مفيدة:
revalidatePath
متاحة في كل من بيئات تشغيل Node.js وEdge.revalidatePath
تبطِل ذاكرة التخزين المؤقت فقط عند زيارة المسار المضمن بعد ذلك. هذا يعني أن استدعاءrevalidatePath
مع جزء مسار ديناميكي لن يؤدي إلى تشغيل العديد من عمليات إعادة التحقق على الفور. يحدث الإبطال فقط عند زيارة المسار بعد ذلك.
المعاملات
revalidatePath(path: string, type?: 'page' | 'layout'): void;
path
: إما سلسلة تمثل مسار نظام الملفات المرتبط بالبيانات التي تريد إعادة التحقق منها (على سبيل المثال،/product/[slug]/page
)، أو جزء المسار الحرفي (على سبيل المثال،/product/123
). يجب أن يكون أقل من 1024 حرفًا.type
: (اختياري) سلسلة'page'
أو'layout'
لتغيير نوع المسار لإعادة التحقق منه.
القيم المُرجعة
لا تُرجع revalidatePath
أي قيمة.
أمثلة
إعادة التحقق من عنوان URL معين
import { revalidatePath } from 'next/cache'
revalidatePath('/blog/post-1')
سيؤدي هذا إلى إعادة التحقق من عنوان URL معين عند الزيارة التالية للصفحة.
إعادة التحقق من مسار صفحة
import { revalidatePath } from 'next/cache'
revalidatePath('/blog/[slug]', 'page')
// أو مع مجموعات المسارات
revalidatePath('/(main)/post/[slug]', 'page')
سيؤدي هذا إلى إعادة التحقق من أي عنوان URL يتطابق مع ملف page
المقدم عند الزيارة التالية للصفحة. هذا لن يبطل الصفحات الموجودة أسفل الصفحة المحددة. على سبيل المثال، /blog/[slug]
لن تبطل /blog/[slug]/[author]
.
إعادة التحقق من مسار تخطيط
import { revalidatePath } from 'next/cache'
revalidatePath('/blog/[slug]', 'layout')
// أو مع مجموعات المسارات
revalidatePath('/(main)/post/[slug]', 'layout')
سيؤدي هذا إلى إعادة التحقق من أي عنوان URL يتطابق مع ملف layout
المقدم عند الزيارة التالية للصفحة. سيؤدي هذا إلى إعادة التحقق من الصفحات الموجودة أسفل نفس التخطيط عند الزيارة التالية. على سبيل المثال، في الحالة أعلاه، سيتم أيضًا إعادة التحقق من /blog/[slug]/[another]
عند الزيارة التالية.
إجراء الخادم (Server Action)
'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',
})
}