کشینگ یعنی ذخیرهسازی داده یا خروجی رندر برای استفادهٔ مجدد بدون نیاز به محاسبه یا دریافت مجدد. Next.js بهصورت پیشفرض تا حد ممکن کش میکند تا سرعت بارگذاری صفحات افزایش یابد و هزینههای سرور کاهش یابد.
Next.js بهصورت خودکار درخواستهای GET مشابه را در طول یک رندر memoize میکند. اگر یک URL چند بار fetch شود، فقط یکبار اجرا میشود.
با استفاده از گزینههای cache و next.revalidate میتوان کنترل کرد. مثلاً:
{ next: { revalidate: 3600 } }
داده را هر ساعت تازهسازی میکند. همچنین میتوان با revalidateTag یا revalidatePath بهصورت دستی کش را تازه کرد.
مسیرهای استاتیک بهصورت پیشفرض در زمان build کش میشوند. استفاده از APIهای پویا مانند کوکی باعث غیرفعال شدن این کش میشود.
در کلاینت، payloadهای RSC برای ناوبریهای بعدی کش میشوند و پس از رفرش صفحه یا گذشت زمان (مثلاً ۵ دقیقه) پاک میشوند.
برای غیرفعال کردن کش داده:
{ cache: 'no-store' }برای مسیرها:
dynamic = 'force-dynamic'یاrevalidate = 0
revalidateTag یا revalidatePath<Link>router.prefetchfetchrevalidatePathکشینگ در Next.js نقش کلیدی در بهینهسازی عملکرد و کاهش هزینهها دارد. با درک انواع کش، استراتژیهای رندرینگ، و ابزارهای مدیریت کش، میتوانید اپلیکیشنهایی سریع، مقیاسپذیر و اقتصادی بسازید.