اولا فرق کش و دیتابیس چیه؟
دوما چرا باید از کش استفاده کنیم اصلا یعنی چی ؟
چرا باید اطلاعات رو کش کنیم ما که دیتابیس داریم هر موقع خواستیم از دیتابیس می خونیم چرا باید از کش استفاده کنیم؟
برای یه سایت کوچک حرف شما درسته. اما وقتی در یه سایت ما روزی قرار باشه ۱۰۰۰ بار ٬ اطلاعات یه جدول به مقدار ۱۰۰۰۰۰ سطر رو دریافت کنیم٬ این باعث فشار به سرور میشه پس میاند همون اطلاعات دیتابیس رو کش میکنند و اگر دوباره تغییر کرد به همین ترتیب.
این کار روی performance و سرعت سایت خیلی اثرگذاره
منظورتون از این که اگه اطلاعات تغییر یا نیاز به آپدیت باشه باcache بهتره
و در لاراول چطوری میشه اطلاعات دیتابیس رو کش کنیم
ببینید لاراول از چند روش برای کش کردن اطلاعات استفاده میکنه.
file, database, memcache & Redis
روش کش کردن اطلاعات رو میشه در فایل config/cache.php مشخص کرد.
برای مثال شما میتونیدیه کلید رو با اطلاعات خاصش با مقدار زمان مشخص کش کنید.
$expiresAt = now()->addMinutes(10);
Cache::put('key', 'value', $expiresAt);
و برای گرفتن اطلاعات کش شده:
$value = Cache::get('key');
حالا فرض کنید شما میخواهید اطلاعات ذخیره شدن در کش رو استفاده کنید.
$value = Cache::get('key', function () {
return DB::table(...)->get();
});
دستور بالا سعی میکنه اطلاعات رو از کش بخونه و اگر موجود نبود از دیتابیس.. به این خاطر سرعت عملکرد در برنامه ها بالا میره.
@ali.bayat
علی آقا اینارو میدونم
می خوام بدونم که حتی فیلد هایی که نیاز به آپدیت هم دارند رو میشه داخل کش ریخت و از کش بخونه و آپدیت کنه و در دیتابیس ذخیره کنه
@netwons
گاهی لازم می شود یک آیتم را از cache بازیابی نموده، اما همچنین در صورت عدم وجود آیتم مورد درخواست یک مقدار پیش فرض را بجای آن درcache ذخیره نمود. فرض کنید می خواهید تمامی کاربران را از cache بازیابی نمایید یا در صورت عدم وجود کاربران مورد درخواست، آن ها را از دیتابیس واکشی کرده و در cache ذخیره کنید. برای این منظور کافی است متد Cache::remember را صدا بزنید:
$value = Cache::remember('users', $minutes, function() {
return DB::table('users')->get();
});
برای اطلاعات بیشتر در زمینه کش در لاراول لینکهای زیر رو مطالعه کنید:
https://laravel.com/docs/5.7/cache
http://www.tahlildadeh.com/ArticleDetails/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-Cache-%D8%AF%D8%B1-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟