- دوشنبه 27 مهر 1405 ساعت 09:00
- 3.1.9
- کامل شده
- منقضی شده
Database Caching Class نتیجه Queryهای انتخابی را در فایل ذخیره میکند تا اجرای دوباره Query مشابه سریعتر شود. این قابلیت با کش عمومی برنامه تفاوت دارد و برای دادههایی مناسب است که تغییر آنها کم است و میتوان نتیجه را برای مدتی نگه داشت.
ساختار و API اصلی
با cache_on() کش Query را فعال و با cache_off() غیرفعال میکنید. cache_delete() کش یک صفحه یا مسیر مشخص را پاک میکند و cache_delete_all() کل کش دیتابیس را حذف میکند. مسیر ذخیرهسازی نیز باید قابل نوشتن و خارج از دسترس عمومی باشد.
نمونه استفاده
$this->db->cache_on();
$query = $this->db->query('SELECT id, title FROM categories ORDER BY title');
$this->db->cache_off();
// after updating a related category page:
$this->db->cache_delete('catalog/categories');نکته مهم
پس از تغییر داده، کش مرتبط را Invalid کنید. کش قدیمی میتواند اطلاعات نادرست نشان دهد و در چند سرور باید راهبرد پاکسازی مشترک داشته باشید.
مطالعه مرتبط
برای ادامه مطالعه، MVC، کوئری، ترنزکشن را ببینید.
تنظیمات کش Query
| متد یا مفهوم | کاربرد |
|---|---|
cache_on() | فعال کردن کش Query. |
cache_off() | غیرفعال کردن کش Query. |
cache_delete($uri) | حذف کش مسیر مشخص. |
cache_delete_all() | پاک کردن همه کش دیتابیس. |
cache path | مسیر ذخیره فایلهای کش. |
invalidation | پاک کردن کش پس از تغییر داده مرتبط. |
نکات عملی برای دیتابیس
پیش از استفاده در محیط واقعی، Driver و نسخه موتور دیتابیس را با قابلیتهای موردنیاز تطبیق دهید. Queryهای دارای ورودی کاربر باید Binding داشته باشند، عملیات چندمرحلهای باید در Transaction قرار بگیرند و برای Queryهای پرتکرار، Index و Execution Plan بررسی شود. تعداد Queryها و حجم Result نیز روی حافظه و زمان پاسخ اثر دارد.
برای عیبیابی، SQL تولیدشده، تعداد ردیفهای متاثر و زمان اجرا را در محیط توسعه ثبت کنید. در Production اطلاعات محرمانه را از Log حذف کنید و خطاهای دیتابیس را به کاربر نشان ندهید. اگر ساختار جدول تغییر میکند، تغییر را نسخهبندی و پیش از اجرا Backup بگیرید.
در بازبینی کد، ترتیب و نتیجه متدهای cache_on()، cache_off()، cache_delete($uri)، cache_delete_all() را بررسی کنید. نام متد بهتنهایی تضمین نمیکند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.