نحوه ی استفاده از سیستم کش داده ها در Yii

نحوه ی استفاده از سیستم کش داده ها در Yii

Data Caching یا ذخیره سازی داده ها را می توان با ده ها سیستم کش موجود پیاده سازی کرد اما تفاوت آن هنگام استفاده در Yii چیست؟

نحوه ی استفاده از سیستم کش داده ها در Yii

در فریم ورک Yii برای Cache کردن داده ها کلاسی با نام CCache تعبیه شده تا برای تمامی این سیستم های کش کد یکسانی نوشته شود و از بازنویسی کدها هنگام تغییر سیستم کش جلوگیری شود.

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

روش استفاده از CCache در Yii نسخه ی ۱٫۱٫* بسیار ساده است، برای ذخیره سازی اطلاعات در cache ابتدا می بایست تنظیمات مربوط به cache مورد نظرتان را در فایل main.php و بخش components وارد نمایید.

به عنوان مثال تنظیمات مربوط به memcache در Yii به صورت زیر پیاده می شود:

یا مثلا برای Apc کار ساده تر نیز می شود:

 انواع سیستم های کش در Yii

سیستم های کش که Yii در نسخه ی ۱٫۱ خود از آن ها پشتیبانی می کند شامل موارد زیر می باشد:

  • CMemCache: افزونه ی کش memcache
  • CApcCache: استفاده از افزونه ی APC
    CXcache: استفاده از افزونه ی XCache
  • CEAcceleratorCache: استفاده از افزونه ی EAccelerator
  • CRedisCache: استفاده از Redis و سیستم ذخیره سازی کلیدهای آن
  • CDbCache: معمول ترین روش است، استفاده از یک دیتابیس SQLite3 به صورت پیشفرض برای ذخیره سازی داده های کش
  • CZendDataCache: استفاده از Zend Data Cache
  • CWinCache: استفاده از افزونه ی WinCache مربوط به PHP
  • CFileCache: استفاده از روش ذخیره سازی داده ها در فایل مناسب برای ذخیره سازی داده های حجیم (مثل صفحات)
  • CDummyCache: فقط وقتی مورد استفاده قرار میگیرد که نیاز به غیرفعال کردن موقت سیستم کش داریم و در اصل داده ای را برای ما کش نمی کند.

 

انواع روش های کش اطلاعات

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

 

 پیاده سازی کش داده ها در Yii

برای ذخیره سازی یک داده ی دلخواه همانند $value در سیستم کش، به راحتی می توانیم از دستور زیر، فارغ از نوع کش مورد استفاده، استفاده نماییم:

در این تابع، داده ی کش تا هنگام پاک شدن توسط کاربر در حافظه باقی می ماند.

دقت کنید که اگر حافظه ی مورد استفاده برای کش پر شود، آخرین داده حذف شده و داده ی جدید جایگزین آن می شود.

حال اگر بخواهیم داده ی مورد نظر ما پس از مدت زمان مشخص خود به خود حذف شود چه باید کرد؟ به راحتی می توانیم از دستور زیر استفاده کنیم:

حال برای مراجعات بعدی خود می توانیم به راحتی از دستور زیر برای دسترسی به داده ی کش شده استفاده کنیم، البته امن تر آن است که قبل از استفاده از داده ی کش شده، وجود آن را بررسی کنیم و اگر داده ی مدنظر ما وجود نداشت آن را دوباره تولید کنیم:

در انتخاب متغیر id همواره دقت داشته باشید که در تمام برنامه ی شما یک مقدار unique باشد و جایی تکرار نشده باشد.

 

نکته: بعضی از سیستم های کش همچون MemCache و APC از دریافت داده های کش به صورت گروهی پشتیبانی می کنند. شما می توانید از تابعی با نام mget برای دریافت گروهی داده ها استفاده کنید. البته اگر از این تابع استفاده کنید و سیستم کش شما از این موضوع پشتیبانی نکند، دریافت گروهی برای شما شبیه سازی خواهد شد.

 

برای حذف یک داده ی کش شده نیز می توانید به راحتی از دستور delete استفاده نمایید و id مربوطه را به عنوان ورودی به آن بدهید.

روش جالب تر استفاده از سیستم کش به صورت آرایه:

 وابستگی کش

تا به این جای کار نیز سیستم کش امکانات مناسبی را به ما ارائه می دهد اما می توانیم وارد امکانات پیشرفته تر Yii نیز در مورد این موضوع بشویم.

شما می توانید هنگام ذخیره کردن داده ی کش خود از وابستگی یا dependency استفاده نمایید. سعی می کنم با یک مثال این موضوع را توضیح دهم. کدهای زیر را در نظر بگیرید.

در این ساختار، داده ی ما در سیستم کش ۳۰ ثانیه اعتبار دارد ولی اگر وابستگی مربوط به آن تغییری بکنید، زودتر اعتبار خود را از دست می دهد.

انواع Dependency ها در سیستم کش:

  • CFileCacheDependency: تغییر وابستگی در صورت تغییر آخرین زمان تغییر یافتن یک فایل
  • CDirectoryCacheDependency: تغییر وابستگی در صورت تغییر هر گونه فایل یا زیر پوشه در دایرکتوری مربوطه
  • CDbCacheDependency: تغییر وابستگی در صورت تغییر نتیجه ی کوئری بازگشتی از دستور تعیین شده
  • CGlobalStateCacheDependency: تغییر وابستگی در صورت تغییر یک متعیر گلوبال مشخص در برنامه که توسطCApplication::setGlobalState() تعیین می شود.
  • CChainedCacheDependency: تغییر وابستگی در صورت تغییر هر کدام از اعضای زنجیره ی مشخص شده
  • CExpressionDependency: تغییر وابستگی در صورت تغییر نتیجه ی عبارت php مشخص شده

 

امیدوارم که از این مقاله بهره ی کافی برده باشید.

مطالب مشابه
ارسال دیدگاه جدید
شما میتوانید نظر و پیشنهاد خود راجب سایت و مطلب را برای ما ارسال کنید.

Time limit is exhausted. Please reload CAPTCHA.

دیدگاهی ارسال نشده است!