استاد کشینگ در Next.js – با use cache، use cache: private و use cache: remote

کشینگ در Next.js راز سرعت و بهینه‌سازی است. با استفاده از Cache Components و سه دستور use cache، use cache: private و use cache: remote می‌توان داده‌ها را به‌صورت هوشمند، شخصی‌سازی‌شده یا اشتراکی ذخیره کرد. این مقاله نحوهٔ فعال‌سازی، استفاده، و مقایسه این روش‌ها را آموزش می‌دهد.

use cacheuse cache: privateuse cache: remoteCache Components

~2 دقیقه مطالعه · آخرین به‌روزرسانی ۲۲ آذر ۱۴۰۴

۱. فعال‌سازی Cache Components


در فایل next.config.ts:

const nextConfig = {
  cacheComponents: true,
}

۲. `use cache` – محتوای استاتیک و اشتراکی


مناسب برای صفحات بلاگ، محصولات، و محتوای بازاریابی.

  • پیش‌پردازش در زمان build
  • کش اشتراکی بین همه کاربران
  • بدون نیاز به کوکی یا header

نمونه کش کردن کامپوننت

'use cache'

export async function Bookings({ type = 'haircut' }) {
  const data = await fetch(`/api/bookings?type=${type}`).then(r => r.json())
  return <div>{data.length} bookings</div>
}

تنظیم زمان اعتبار کش

cacheTag('posts')
cacheLife({ stale: 60 })

۳. `use cache: private` – داده‌های شخصی‌سازی‌شده


مناسب برای داشبورد کاربر، پیشنهادات شخصی، و داده‌هایی که به کوکی یا header وابسته‌اند.

  • کش فقط برای هر کاربر
  • استفاده از cookies() یا headers()
  • قابل استفاده در context دینامیک

نمونه توصیه‌های شخصی

'use cache: private'
const sessionId = (await cookies()).get('session-id')?.value || 'guest'
return fetch(`/api/recs?product=${productId}&session=${sessionId}`)

۴. `use cache: remote` – داده‌های اشتراکی و دینامیک


مناسب برای قیمت‌ها، آنالیتیکس، و داده‌هایی که در زمان اجرا تولید می‌شوند.

  • کش اشتراکی بین کاربران
  • قابل استفاده بعد از await connection()
  • ذخیره در cache handler سمت سرور

نمونه قیمت محصول

'use cache: remote'
cacheTag(`price-${productId}`)
cacheLife({ expire: 3600 })

۵. جدول مقایسه


ویژگی use cache use cache: private use cache: remote
پیش‌پردازش در build
استفاده از کوکی
استفاده بعد از connection()
کش اشتراکی
مناسب برایSEO و بلاگداشبورد کاربرقیمت و آمار

۶. قوانین تو در تویی


  • 'use cache' می‌تواند شامل 'use cache: remote' باشد
  • 'use cache: remote' می‌تواند شامل خودش باشد
  • نامعتبر: 'use cache: private' نباید شامل 'use cache: remote' باشد

۷. مثال واقعی: صفحه محصول فروشگاه


ترکیب سه نوع کش برای محصول، قیمت، و توصیه‌ها.

await getProduct(id) // use cache
await getPrice(id)   // use cache: remote
await getRecs(id)    // use cache: private

۸. Bonus: `use server` و `use client`


  • 'use server': برای توابع سمت سرور
  • 'use client': برای کامپوننت‌های تعاملی

نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

مسیریابی پیشرفته و هوک‌های عملکرد در Next.js — راهنمای توسعه‌دهنده برای App Router

Next.js مجموعه‌ای غنی از هوک‌های کلاینت و ابزارهای کش و ناوبری را در اختیار توسعه‌دهندگان قرار می‌دهد. از خواندن پارامترهای مسیر تا گزارش Web Vitals و مدیریت کش، این مقاله مهم‌ترین ابزارهای App Router را با مثال‌های کاربردی معرفی می‌کند.

ادامه

مدیریت احراز هویت و کش در Next.js — راهنمای توسعه‌دهنده برای امنیت و عملکرد پویا

Next.js با معرفی قابلیت‌های آزمایشی جدید، امکان کنترل دقیق‌تر دسترسی و کش داده‌ها را فراهم کرده است. تابع unauthorized برای مدیریت خطای 401 و هدایت کاربران به صفحه ورود، unstable_cache برای کش هوشمند عملیات سنگین، updateTag برای بازسازی آنی داده‌ها، و useLinkStatus برای نمایش وضعیت ناوبری استفاده می‌شوند. این مقاله نحوه استفاده از این ابزارها را با مثال‌های کاربردی و نکات مهم بررسی می‌کند.

ادامه

redirect و refresh در Next.js — ریدایرکت‌های هوشمند و تازه‌سازی مسیر در Server Actions

تابع redirect در Next.js برای هدایت کاربر به مسیر جدید استفاده می‌شود و بسته به نوع استفاده، پاسخ HTTP با وضعیت 307 یا 303 ارسال می‌کند. این تابع در Server Components، Client Components، Route Handlers و Server Actions قابل استفاده است. تابع refresh نیز برای تازه‌سازی مسیر کلاینت از درون Server Action استفاده می‌شود. این مقاله نحوه استفاده از هر دو تابع را با مثال‌های کاربردی و نکات مهم توضیح می‌دهد.

ادامه

Next.js با معرفی NextRequest و NextResponse، APIهای Request و Response مرورگر را گسترش داده و ابزارهای قدرتمندی برای مدیریت کوکی‌ها، هدرها، ریدایرکت‌ها، بازنویسی مسیرها و پاسخ‌های JSON فراهم کرده است. این مقاله نحوه استفاده از این ابزارها را با مثال‌های کاربردی و نکات امنیتی توضیح می‌دهد.

Next.js با معرفی NextRequest و NextResponse، APIهای Request و Response مرورگر را گسترش داده و ابزارهای قدرتمندی برای مدیریت کوکی‌ها، هدرها، ریدایرکت‌ها، بازنویسی مسیرها و پاسخ‌های JSON فراهم کرده است. این مقاله نحوه استفاده از این ابزارها را با مثال‌های کاربردی و نکات امنیتی توضیح می‌دهد.

ادامه

headers، ImageResponse، notFound و permanentRedirect در Next.js — مدیریت درخواست‌ها، تولید تصویر، خطا و ریدایرکت

Next.js ابزارهای قدرتمندی برای مدیریت درخواست‌ها و پاسخ‌ها در کامپوننت‌های سروری فراهم کرده است. تابع headers برای خواندن هدرهای HTTP ورودی، ImageResponse برای تولید تصاویر داینامیک، notFound برای نمایش صفحه خطای 404، و permanentRedirect برای ریدایرکت دائمی کاربران استفاده می‌شوند. این مقاله نحوه استفاده از هر یک را با مثال‌های کاربردی توضیح می‌دهد.

ادامه

راهنمای کامل استفاده از metadata و generateMetadata در Next.js

در نسخه‌های مدرن Next.js، مدیریت metadata صفحات بسیار قدرتمندتر و ساده‌تر شده است. metadata به‌صورت خودکار در تگ <head> صفحات تزریق می‌شود و نقش مهمی در SEO، اشتراک‌گذاری اجتماعی و تجربه کاربری دارد. این مقاله دو روش اصلی تعریف metadata را بررسی می‌کند: استفاده از آبجکت ثابت metadata و تابع داینامیک generateMetadata.

ادامه