- سهشنبه 21 مهر 1405 ساعت 18:00
- 3.1.9
- کامل شده
- منقضی شده
Caching Driver در CodeIgniter 3 یک رابط مشترک برای ذخیره و بازیابی دادههای موقت فراهم میکند. بهجای وابسته شدن مستقیم به یک سرویس، میتوانید از API یکسان استفاده کنید و Adapter را در تنظیمات انتخاب کنید. Adapterهای رایج در این نسخه شامل File، Memcached، Redis، APC و WinCache هستند، البته دسترسپذیری هرکدام به افزونه و محیط سرور وابسته است.
ساختار و API اصلی
در بارگذاری Driver میتوانید Adapter و تنظیمات آن را مشخص کنید. get() مقدار ذخیرهشده را میخواند، save() داده را با زمان انقضا ذخیره میکند، delete() یک کلید را حذف میکند و clean() کل کش Adapter را پاک میکند.
نمونه استفاده
$this->load->driver('cache', array('adapter' => 'file', 'backup' => 'dummy'));
$products = $this->cache->get('featured_products');
if ($products === FALSE) {
$products = $this->db->where('featured', 1)->get('products')->result_array();
$this->cache->save('featured_products', $products, 300);
}نکته مهم
کلید کش باید به نسخه داده یا شناسه کاربر وابسته باشد تا اطلاعات یک کاربر به دیگری نمایش داده نشود. برای دادههای حساس از کش عمومی استفاده نکنید و زمان انقضا و invalidation را طراحی کنید.
مطالعه مرتبط
برای ادامه مطالعه، MVC، کوئری، ترنزکشن را ببینید.
API کش درایور
| متد یا مفهوم | کاربرد |
|---|---|
get($key) | خواندن مقدار ذخیرهشده، در صورت نبود کلید مقدار FALSE برمیگردد. |
save($key, $value, $ttl) | ذخیره مقدار با زمان انقضا بر حسب ثانیه. |
delete($key) | حذف یک کلید مشخص. |
clean() | پاک کردن دادههای کش Adapter. |
cache_info() | دریافت اطلاعات وضعیت کش، در Adapterهای پشتیبانیشده. |
is_supported($adapter) | بررسی پشتیبانی از Adapter انتخابی. |
نحوه استفاده و عیبیابی
در یک Controller ابتدا Library را با Loader بارگذاری کنید، سپس تنظیمات محیطی را به آن بدهید و عملیات را اجرا کنید. نتیجه را از مسیر مشخص دریافت کنید و در صورت شکست، پیام خطا را در Log ثبت کنید. اگر Library به Driver خارجی وابسته است، وجود افزونه PHP یا برنامه موردنیاز را روی سرور بررسی کنید.
در محیط توسعه، مسیر موفق و مسیر خطا را جداگانه آزمایش کنید. ورودی خالی، مقدار نامعتبر، فایل بزرگ، Timeout سرویس خارجی و نبود مجوز نوشتن از سناریوهایی هستند که باید بررسی شوند. منابعی مانند اتصال شبکه و فایلهای موقت را پس از پایان عملیات آزاد کنید.
در بازبینی کد، ترتیب و نتیجه متدهای get($key)، save($key, $value, $ttl)، delete($key)، clean() را بررسی کنید. نام متد بهتنهایی تضمین نمیکند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.