فینچ کشینگ route-level را از طریق متد پسوندی .cache() فراهم میکند. پاسخهای کششده نیازی به اجرای مجدد controller ندارند.
router
.get('/api/products', ProductController().index)
.cache(duration: Duration(minutes: 10));
| پارامتر |
نوع |
توضیح |
duration |
Duration |
مدت اعتبار کش |
cacheSource |
CacheSource |
memory یا file (پیشفرض: memory) |
cacheType |
CacheParam |
کلید کش چگونه تعیین میشود |
| مقدار |
توضیح |
CacheParam.all |
همه درخواستها را یکی در نظر بگیر (کش یکسان) |
CacheParam.user |
هر کاربر کش مجزا دارد |
CacheParam.params |
هر ترکیب پارامتر کش مجزا دارد |
CacheParam.userAndParams |
ترکیبی از کاربر و پارامترها |
// کش در حافظه (پیشفرض) — سریعتر، در 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');