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