همانطور که می دونید استفاده از کش راه موثری برای بهبود عملکرد اپلیکیشنمون می باشد .
chache مکانیسمی است که اطلاعات را در آن ذخیره می کنیم و
زمانی که آن ها را صدا بزنیم از آن استفاده می کنیم .
فریم ورک Yii از چندین نوع برای ذخیره در کش استفاده می کند:
-
yii\caching\DbCache
ذخیره ی کش در جدولی در دیتابیس -
yii\caching\ApcCache
استفاده از کش با اکستنشن php با نام APC -
yii\caching\FileCache
ذخیره ی کش در فایلی در پروژه -
yii\caching\DummyCache
ذخیره ی کش در فایلی در پروژه -
yii\caching\MemCache
استفاده از کش با اکستنشن php با نام MemCache -
yii\caching\WinCache
استفاده از کش با اکستنشن php با نام WinCache - yii\redis\Cache
-
yii\caching\XCache
استفاده از کش با اکستنشن php با نام XCache
خوب بریم که شروع کنیم :
ابتدا در component کش مورد نظرمونو صدا میزنیم
basic
config/web.php
advance
frontend/config/main.php
'cache' => [ 'class' => 'yii\caching\FileCache', ],
ما از fileCache استفاده کردیم
در این نوع دیتا در فایلی در پروژه ذخیره می شود
محل ذخیره شده :در فولدر runtime فولدر cache ذخیره می شود
جهت استفاده به این صورت عمل می کنیم:
$cache = Yii::$app->cache; // فراخوانی کش $data = $cache->get("goyii.ir"); if ($data === false) { // اگر کشی ست نشده بود $data = "You Are In Go Yii . IR"; // متنی را در کش ست می کنیم $cache->set("goyii.ir", $data, 30); } // محتوای فراخوانی شده را ست می کنیم print_r($data);
در کد بالا با استفاده از
Yii::$app->cache
به کامپوننت دسترسی پیدا می کنیم
با استفاده از
get()
بررسی می کنیم که آیا کشی با نام
goyii.ir
وجود دارد(ست شده است)
در صورتی که ست نشده بود با استفاده از
set()
کشی با نام
goyii.ir
ست می کنیم
ابتدا نام کش , سپس محتوا و در آخر مدت زمان این کش که در اینجا ۳۰ ثانیه انتخاب شده است.
برای درک بهتر این موصوع من ثانیه را به ۳۶۰ تغییر میدم
$cache = Yii::$app->cache; // فراخوانی کش $data = $cache->get("goyii.ir"); if ($data === false) { // اگر کشی ست نشده بود $data = "You Are In Go Yii . IR"; // متنی را در کش ست می کنیم $cache->set("goyii.ir", $data, 360); } // محتوای فراخوانی شده را ست می کنیم print_r($data);
ابتدا یک بار کد بالا را اجرا می کنیم
در خروجی
You Are In Go Yii . IR
نمایش داده می شود
خوب در کد بالا متن رو تغییر میدهیم
$cache = Yii::$app->cache; // فراخوانی کش $data = $cache->get("goyii.ir"); if ($data === false) { // اگر کشی ست نشده بود $data = "new content"; // متنی را در کش ست می کنیم $cache->set("goyii.ir", $data, 360); } // محتوای فراخوانی شده را ست می کنیم print_r($data);
در خروجی پس از اجرا باز هم
You Are In Go Yii . IR
نمایش داده می شود
چرا؟
به دلیل اینکه پس از اجرای دوباره سیستم get() را اجرا میکنه و میبینه که قبلا کش ست شده
به همین دلیل دیگه نمیاد دوباره کش جدید رو ست کنه.
به ۳۶۰ ثانیه دقت کنین
شما بعد از ۳۶۰ ثانیه اگه دوباره اجرا کنین
کش جدید ست می شود .
نکته:
برای حذف کردن کش شما می توانید از delete() استفاده کنین