کش کردن صفحات میتواند سرعت بارگذاری وبسایت شما را به میزان قابل توجهی افزایش دهد. اگر صفحهای کش (Cache) شده باشد، در این شرایط نمونهای رندر شده از آن در حافظهی سرور ذخیره خواهد شد. بدین ترتیب در مراجعهی بعدی کاربر به آن صفحه، به جای رندر مجدد، صفحهی کش شدهای که قبلا آماده شده برای وی نمایان خواهد شد در نتیجه این صفحه به طور مستقیم در مرورگر کاربر نمایش داده میشود. در ادامهی این آموزش با زومیت همراه باشید تا شما را با روش استفاده از قابلیت کش، در فریمورک Codeigniter آشنا کنیم.
در فریمورک Codeigniter به منظور کش کردن صفحات، امکانات بسیار خوبی در اختیار شما قرار دارد. فایلهای کش شده در اپلیکیشنهای ساخته شده با این فریمورک در مسیر application/cache ذخیره خواهند شد. میتوان کش را فقط برای یکسری از صفحات خاص فعال کرد. هنگام فعال کردن این ویژگی، باید زمان مورد نظر برای نگهداری فایلهای کش را نیز تعیین کنیم. پس از گذشت زمان تعیین شده، فایل کش شده به طور خودکار حذف و نسخهی جدیدی از آن تولید میشود. در نتیجه میتوان با بهره گرفتن از قابلیت تعیین زمان، برای صفحاتی که محتوای آنها ثابت است، یک زمان طولانی تعیین کرد و برای صفحاتی که محتوای آنها تغییرات زیادی دارد، زمان کمی تنظیم شود. بدین ترتیب بهترین عملکرد را برای کاربر فراهم خواهیم کرد.
فعال کردن کش در فریمورک Codeigniter
با نوشتن کد زیر در هر فایل کنترلری که مد نظر شما است، میتوانید سیستم کش فریمورک را فعال کنید.
$this->output->cache($n);
دقت کنید در کد بالا متغیر n$ در واقع زمان مورد نظر ما برای نگهداری فایلهای کش است که بر حسب دقیقه تعیین میشود. پس از اینکه فایل کش تولید شود، با گذشت بازهی زمانی تعیین شده در کد بالا، فایلهای ایجاد شدهی کش به طور خودکار حذف و مجددا ساخته خواهند شد.
غیرفعال کردن کش در فریمورک Codeigniter
همانطور که اشاره کردیم، فایلهای کش با رسیدن به زمان انقضای تعیین شده توسط ما حذف خواهند شد، اما اگر شما خود به صورت دستی فایلهای کش را حذف کرده باشید، در این شرایط باید سیستم کش را در فریمورک غیرفعال کنید. بدین منظور باید کد زیر را در کنترلر مورد نظر خود اجرا کنید.
// Deletes cache for the currently requested URI $this->output->delete_cache(); // Deletes cache for /foo/bar $this->output->delete_cache('/foo/bar');
مثال
ابتدا نرمافزار سرور محلی زمپ را روی رایانهی خود اجرا و دو سرویس آپاچی و MySQL را در حالت فعال قرار دهید.
سپس یک پروژهی جدید Codeigniter ایجاد کنید. بدین منظور یک پوشهی جدید در پوشهی htdocs نرمافزار سرور مجازی زمپ ایجاد کرده و فایلهای اصلی فریمورک مورد اشاره را در آن کپی کنید. حال طبق آموزشهای جلسات اولیهی این سری آموزشی، تنظیمات و پیکربندیهای اولیه و در واقع نصب فریمورک را انجام دهید. ما اسم این پروژه را codei-cache تعیین کردهایم و این یعنی پروژه ما در پوشهی codei-cache ایجاد شده است.
حال باید کنترلر مورد نظرمان را ایجاد کنیم. در مسیر application/controller فایلی جدید به نام Cache_controller.php ایجاد کرده و سپس کد زیر را در آن قرار داده و در نهایت آن را ذخیره کنید.
<?php class Cache_controller extends CI_Controller { public function index() { $this->output->cache(1); $this->load->view('test'); } public function delete_file_cache() { $this->output->delete_cache('cachecontroller'); } } ?>
همانطور که میبینید، در کد بالا یک متد به نام ()index ایجاد کردهایم و در این متد با استفاده از کدهای:
$this->output->cache(1); $this->load->view('test');
ابتدا کش را در این اپلیکیشن فعال کرده و سپس فایل ویو مورد نظرمان را لود میکنیم.
کنترلر بالا یک متد دیگر به نام ()delete_file_cache نیز دارد که با استفاده از آن، کش را غیرفعال و فایلهای کش ایجاد شده را حذف میکنیم.
پس از ساخت کنترلر نوبت به ساخت فایل ویو میرسد. در مسیر application/views یک فایل جدید به نام test.php ایجاد کرده و سپس کدهای زیر را در آن قرار داده و نهایتا آن را ذخیره کنید.
<!DOCTYPE html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>CodeIgniter View Example</title> </head> <body> CodeIgniter View Example </body> </html>
کد بالا توضیح خاصی ندارد چراکه فقط شامل یکسری کد ثابت اچتیامال است.
مثل همیشه به منظور دسترسی به کنترلر خود، آدرسدهی سفارشی مد نظرمان را با استفاده از فایل routes.php ایجاد میکنیم. بدین منظور این فایل را که در مسیر application/config/routes.php قرار دارد باز کرده و سپس کدهای زیر را به انتهای کدهای موجود در آن اضافه کنید.
$route['cachecontroller'] = 'Cache_controller'; $route['cachecontroller/delete'] = 'Cache_controller/delete_file_cache';
اینکار باعث میشود تا با فراخوانی آدرس cachecontroller در این اپلیکیشن، کنترلر Cache_controller فراخوانی شود. اگر خاطرتان باشد گفتیم که پس از فراخوانی یک کنترلر، اگر تابعی به نام ()index در آن کنترلر موجود باشد، به صورت خودکار فراخوانی خواهد شد. در اینجا نیز با فراخوانی کنترلر Cache_controller، متد ایندکس آن به صورت خودکار اجرا میشود.
علاوه بر این خط دوم کد بالا که آن را در فایل routes.php اضافه کردهایم باعث میشود تا با فراخوانی آدرس cachecontroller/delete در این اپلیکیشن، متد delete_file_cache از کنترلر Cache_controller اجرا شود.
اگر همهی مراحل را تا به اینجای کار به درستی انجام داده باشید، با اجرای آدرس زیر در مرورگر خود، میتوانید این مثال را اجرا کنید.
http://127.0.0.1/index.php/cachecontroller
البته میتوانید در آدرس فوق به جای 127.0.0.1 از عبارت localhost نیز استفاده کنید. در این شرایط آدرس این پروژه به صورت زیر خواهد بود:
http://localhost/index.php/cachecontroller
پس از اجرای یکی از آدرسهای فوق، شما باید فایلهای کش ایجاد شده را در مسیر application/cache مشاهده کنید. همچنین به منظور حذف فایلهای کش ایجاد شده، میتوانید آدرس زیر را در مرورگر خود فراخوانی کنید.
http://localhost/index.php/cachecontroller/delete
در پایان اگر سوال یا پیشنهادی در مورد مباحث مطرح شده در این جلسه دارید، لطفا آن را از طریق بخش دیدگاهها با زومیت و سایر کاربران به اشتراک بگذارید.