کش کردن کوئری‌های الوکوئنت در لاراول

زمان مطالعه: 2 دقیقه
رقیه اباذری
رقیه اباذری
نویسنده
کش کردن کوئری‌های الوکوئنت در لاراول

وقتی صحبت از سرعت سایت و اپلیکیشن می‌شود، کش می‌تواند بهترین گزینه باشد. کش کردن تاثیر زیادی در سرعت سایت دارد. خوشبختانه لاراول به صورت از پیش نصب شده درایورهای کش دارد که بدون هیچ زحمتی می‌توانید از آنها استفاده کرده و سرعت سایت را بهبود ببخشید. Redis و Memcached یا تنها استفاده از فایل‌های لوکال، لاراول همه اینها را دارد.

در این مقاله پیاده سازی کش برای کوئری‌های الوکوئنت به صورت مستقیم از لاراول را بررسی می‌کنیم، که کش در دیتابیس را ساده می‌سازد.

نصب و راه اندازی 

پکیج را می‌توانید از طریق کامپوزر نصب کنید:

composer require rennokki/laravel-eloquent-query-cache

مدل‌های شما به تریت QueryCacheable نیاز دارند:

use Rennokki\QueryCache\Traits\QueryCacheable;
class Article extends Model
{
    use QueryCacheable;
    ...
}

کش را به صورت پیش فرض فعال کنید

پکیج به صورت پیش فرض کش را فعال نمی‌کند. پراپرتی cacheFor$ را به مدل اضافه کنید:

use Rennokki\QueryCache\Traits\QueryCacheable;
class Article extends Model
{
    use QueryCacheable;
    protected $cacheFor = 180; // 3 minutes
}

هر وقت که یک کوئری اجرا شود، کش وارد عمل می‌شود. در صورت خالی بودن کش برای آن کوئری، آن را ذخیره می‌کند و دفعه بعد آن را از کوئری دیتابیس که کش شده، بازیابی می‌کند.

در صورت وجود داشتن آن را بازیابی کرده و به کار می‌گیرد. این عمل را بدون اینکه با دیتابیس کاری داشته باشد انجام می‌دهد.

// database hit; the query result was stored in the cache
Article::latest()->get();
// database was not hit; the query result was retrieved from the cache
Article::latest()->get();

چنانچه می‌خواهید از استفاده از کش جلوگیری کنید، از متد ()dontCache-> قبل از تریگر کردن متد آخر استفاده کنید.

Article::latest()->dontCache()->firstOrFail();

فعال کردن کش به صورت کوئری به کوئری

اگر فعال کردن کش به صورت پیش‌فرض، راه حل مناسبی برای شما نیست، روشی جایگزین را انتخاب کنید. فعال کردن کش به صورت کوئری به کوئری یعنی هر بار که کوئری می‌نویسد باید آن را کش کنید که در مقابل روش اول یعنی کش کردن تمامی کوئری‌های مدل است.

اول از همه، متغیر cacheFor$ را از مدل حذف کنید. در هر کوئری با فراخونی (...)cacheFor->  مشخص می‌کنید که قصد کش کردن آن کوئری را دارید.

Article::cacheFor(now()->addHours(24))->paginate(15);

با تگ‌ها بهتر سازماندهی کنید

بعضی از ذخیره سازهای کش مثل Redis یا Memcached از تگ زدن کلیدها پشتیبانی می‌کنند. این ویژگی از این منظر خیلی مفید است که کوئری کش شده را تگ می‌زنیم و هر وقت که بخواهیم کش مورد نظرمان را غیرفعال می‌کنیم. 

به عنوان مثال ساده، اگر بخواهیم با آپدیت کردن یک مقاله، کش لیست مقاله‌ها را پاک کنیم، استفاده از تگ روش کارآمدی است.

$articles = Article::cacheFor(60)->cacheTags(['latest:articles'])->latest()->get();
$article = Article::find($id);
$article->update(['title' => 'My new title']);
Article::flushQueryCache(['latest:articles']);

متد flushQueryCache فقط کش تگ شده با latest:articles را پاک می0157کند. اگر کوئری‌های دیگر با تگی به جز latest:articles تگ شده باشند در کش نگه داشته می‌شوند.

 

 

 

 

 

 

 

 



رقیه اباذری
رقیه اباذری

تو دانشگاه IT خوندم و اکثر منابع کتاب‌های ترجمه شده بودند و صدالبته مبهم :( مثلا element رو "عنصر" ترجمه می‌کردن و من همیشه می‌رفتم تو شیمی و جدول مندلیف. تو باورژن سعی کردم تا حد ممکن مطالب رو با زبان ساده و قابل درک بنویسم. باشد که کسانی که تازه پا به عرصه برنامه‌نویسی گذاشتن، راغب‌تر بشن و با نظرات و فیدبک‌های شما راه هموارتر بشه:)

مطالب مرتبط

لاراول فریمورکی برای سرعت بخشیدن به کدنویسی
لاراول فریمورک

لاراول فریمورکی برای سرعت بخشیدن به کدنویسی

مقاله‌های زیادی درباره مقایسه فریمورک لاراول با سیموفنی یا مواردی از این قبیل در سطح اینترنت یافت می‌شود. با این حال در این مقاله قصد مقایسه فریمورک‌ها را نداریم. بلکه سعی در توضیح مزایای لاراول و امکانات فریمورک لاراول داریم. امکانات بی‌نظیری که باعث شده است برنامه‌نویسان زیادی به سمت برنامه‌نویسی لاراول تغییر مسیر دهند

رقیه اباذری
رقیه اباذری

2 سال پیش

7 دقیقه

آموزش ساخت سایت چندزبانه در لاراول
لاراول

آموزش ساخت سایت چندزبانه با استفاده از قابلیت محلی سازی در لاراول

قابلیت محلی سازی لاراول روش مناسبی برای بازیابی استرینگ‌ها به زبان‌های مختلف را برای ما فراهم می‌کند. در واقع با استفاده از این قابلیت است که می‌توانیم با کمترین اتلاف وقت، از چند زبان در وب سایت خود پشتیبانی کنیم.

رقیه اباذری
رقیه اباذری

2 سال پیش

7 دقیقه

افزایش سرعت لاراول با کمک سول (swoole)
php لاراول

افزایش سرعت لاراول با کمک سول (swoole)

Swoole فریم‌ورک برنامه‌نویسی همگام در سطح تولید برای PHP است. اجرای swoole بر روی لاراول، عملکرد اپلیکیشن لاراولی شما را تقویت می‌کند.

رقیه اباذری
رقیه اباذری

2 سال پیش

3 دقیقه

دیدگاه‌ها