• 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() را بررسی کنید. نام متد به‌تنهایی تضمین نمی‌کند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.

سایر پست های داکیومنت