در حال دریافت اطلاعات ...
متن رفرنس
در سیستم کش جدید Next.js میتوان دادههای کششده را برچسبگذاری (tag) کرد تا بعداً بتوان آنها را بهصورت هدفمند نامعتبر کرد. این کار با cacheTag انجام میشود. وقتی داخل یک تابع که با 'use cache' کش میشود از cacheTag('products') استفاده میکنیم، در واقع میگوییم این دادهها متعلق به تگ «products» هستند. بعداً هر جا لازم باشد میتوان تمام کشهایی که این تگ را دارند با یک دستور invalidate کرد، بدون اینکه لازم باشد مسیر یا تابع خاصی را بشناسیم.
برای نامعتبر کردن این کشها دو روش اصلی وجود دارد: revalidateTag و updateTag. تفاوت این دو در نحوهٔ تازهسازی داده است.
revalidateTag از الگوی stale‑while‑revalidate استفاده میکند. یعنی وقتی این تابع اجرا شود، کش فعلی فوراً حذف نمیشود؛ کاربران همچنان همان دادهٔ کششده (حتی اگر کمی قدیمی باشد) را دریافت میکنند تا پاسخ سریع بماند. در همین زمان، Next.js در پسزمینه دادهٔ جدید را دوباره از منبع اصلی میگیرد و کش را بهروزرسانی میکند. این روش برای دادههایی مناسب است که کمی تأخیر در بهروزرسانی آنها مشکلی ایجاد نمیکند، مثل لیست محصولات، مقالات وبلاگ یا دادههای عمومی سایت.
در مقابل، updateTag کش را بلافاصله منقضی میکند. یعنی وقتی اجرا شود، دادهٔ کششده دیگر قابل استفاده نیست و درخواست بعدی مجبور است مستقیماً دادهٔ تازه را از منبع اصلی دریافت کند. هدف این روش سناریوی read‑your‑own‑writes است؛ یعنی وقتی کاربر تغییری ایجاد میکند (مثلاً یک پست میسازد یا اطلاعاتی را ویرایش میکند)، باید همان لحظه نتیجهٔ تغییر خودش را ببیند و نه نسخهٔ قدیمی کششده.
از نظر محل استفاده نیز تفاوتی وجود دارد: revalidateTag را میتوان هم در Server Actions و هم در Route Handlers استفاده کرد، اما updateTag فقط در Server Actions قابل استفاده است. بهطور خلاصه، اگر سرعت پاسخ مهمتر از بهروزرسانی فوری باشد از revalidateTag استفاده میشود، اما اگر لازم باشد تغییرات بلافاصله برای کاربر قابل مشاهده باشند باید از updateTag استفاده کرد.
عنوان کارت
پاسخ