امروز:دوشنبه ,۱۳۹۷/۱۱/۲۹
Download http://bigtheme.net/joomla Free Templates Joomla! 3
Home / Yii2 / مدیریت کش (cache) در Yii2

مدیریت کش (cache) در Yii2

همانطور که می دونید استفاده از کش راه موثری برای بهبود عملکرد اپلیکیشنمون می باشد .
chache مکانیسمی است که اطلاعات را در آن ذخیره می کنیم و
زمانی که آن ها را صدا بزنیم از آن استفاده می کنیم .
فریم ورک Yii از چندین نوع برای ذخیره در کش استفاده می کند:

  1. yii\caching\DbCache
    ذخیره ی کش در جدولی در دیتابیس
  2. yii\caching\ApcCache
    استفاده از کش با اکستنشن php با نام APC
  3. yii\caching\FileCache
    ذخیره ی کش در فایلی در پروژه
  4. yii\caching\DummyCache
    ذخیره ی کش در فایلی در پروژه
  5. yii\caching\MemCache
    استفاده از کش با اکستنشن php با نام MemCache
  6. yii\caching\WinCache
    استفاده از کش با اکستنشن php با نام WinCache
  7. yii\redis\Cache

  8. 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() استفاده کنین

Check Also

سایت چند زبانه با فریم ورک yii

سایت چند زبانه با فریم ورک yii مطلب که در این بخش قصد آموزش داریم …

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *