کش Route

فینچ کشینگ route-level را از طریق متد پسوندی .cache() فراهم می‌کند. پاسخ‌های کش‌شده نیازی به اجرای مجدد controller ندارند.

راه‌اندازی پایه

router
    .get('/api/products', ProductController().index)
    .cache(duration: Duration(minutes: 10));

پارامترهای RouteCache

پارامتر نوع توضیح
duration Duration مدت اعتبار کش
cacheSource CacheSource memory یا file (پیش‌فرض: memory)
cacheType CacheParam کلید کش چگونه تعیین می‌شود

CacheParam — نوع کش

مقدار توضیح
CacheParam.all همه درخواست‌ها را یکی در نظر بگیر (کش یکسان)
CacheParam.user هر کاربر کش مجزا دارد
CacheParam.params هر ترکیب پارامتر کش مجزا دارد
CacheParam.userAndParams ترکیبی از کاربر و پارامترها

CacheSource — محل ذخیره

// کش در حافظه (پیش‌فرض) — سریع‌تر، در restart از بین می‌رود
.cache(
  duration: Duration(hours: 1),
  cacheSource: CacheSource.memory,
)

// کش روی دیسک — کندتر، در restart باقی می‌ماند
.cache(
  duration: Duration(hours: 24),
  cacheSource: CacheSource.file,
)

مثال‌های کامل

// صفحه اصلی: برای همه یکسان، ۵ دقیقه
router
    .get('/home', HomeController().index)
    .cache(
      duration: Duration(minutes: 5),
      cacheType: CacheParam.all,
    );

// داشبورد: هر کاربر کش مجزا، ۳۰ دقیقه
router
    .get('/dashboard', DashboardController().index)
    .cache(
      duration: Duration(minutes: 30),
      cacheType: CacheParam.user,
    );

// جستجو: بر اساس پارامترهای query، ۲ دقیقه
router
    .get('/search', SearchController().results)
    .cache(
      duration: Duration(minutes: 2),
      cacheType: CacheParam.params,
    );

پاک کردن کش

// پاک کردن تمام کش‌ها
RouteCache.clearAllCache();

// پاک کردن کش یک مسیر مشخص
RouteCache.clearCache('/api/products');