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',
  })
}