revalidatePath
تتيح لك revalidatePath
إزالة البيانات المخزنة مؤقتًا حسب الطلب لمسار معين.
معلومة مفيدة:
revalidatePath
تقوم فقط بإبطال ذاكرة التخزين المؤقت عند زيارة المسار المضمن بعد ذلك. هذا يعني أن استدعاءrevalidatePath
مع جزء مسار ديناميكي لن يؤدي إلى تشغيل العديد من عمليات إعادة التحقق على الفور. يحدث الإبطال فقط عند زيارة المسار بعد ذلك.- حاليًا، تقوم
revalidatePath
بإبطال جميع المسارات في ذاكرة التخزين المؤقت لموجه العميل (client-side Router Cache) عند استخدامها في إجراء خادم. هذا السلوك مؤقت وسيتم تحديثه في المستقبل ليطبق فقط على المسار المحدد.- يؤدي استخدام
revalidatePath
إلى إبطال المسار المحدد فقط في ذاكرة التخزين المؤقت للمسار من جانب الخادم (server-side Route Cache).
المعاملات
revalidatePath(path: string, type?: 'page' | 'layout'): void;
path
: إما سلسلة تمثل مسار نظام الملفات المرتبط بالبيانات التي تريد إعادة التحقق منها (على سبيل المثال،/product/[slug]/page
)، أو جزء المسار الحرفي (على سبيل المثال،/product/123
). يجب أن يكون أقل من 1024 حرفًا. هذه القيمة حساسة لحالة الأحرف.type
: (اختياري) سلسلة'page'
أو'layout'
لتغيير نوع المسار لإعادة التحقق منه. إذا كانpath
يحتوي على جزء ديناميكي (على سبيل المثال،/product/[slug]/page
)، فإن هذه المعلمة مطلوبة. إذا كان path يشير إلى جزء المسار الحرفي، على سبيل المثال/product/1
لصفحة ديناميكية (على سبيل المثال،/product/[slug]/page
)، فلا يجب تقديمtype
.
القيم المُرجعة
لا ترجع revalidatePath
أي قيمة.
أمثلة
إعادة التحقق من عنوان URL محدد
import { revalidatePath } from 'next/cache'
revalidatePath('/blog/post-1')
سيؤدي هذا إلى إعادة التحقق من عنوان URL محدد واحد عند زيارة الصفحة التالية.
إعادة التحقق من مسار صفحة
import { revalidatePath } from 'next/cache'
revalidatePath('/blog/[slug]', 'page')
// أو مع مجموعات المسارات
revalidatePath('/(main)/blog/[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]
عند الزيارة التالية.
إعادة التحقق من جميع البيانات
import { revalidatePath } from 'next/cache'
revalidatePath('/', 'layout')
سيؤدي هذا إلى إفراغ ذاكرة التخزين المؤقت لموجه العميل، وإعادة التحقق من ذاكرة التخزين المؤقت للبيانات عند زيارة الصفحة التالية.
إجراء الخادم
'use server'
import { revalidatePath } from 'next/cache'
export default async function submit() {
await submitForm()
revalidatePath('/')
}
معالج المسار
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: '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',
})
}