کش کردن صفحات وب

مجتبی پاکزاد کدایگنایتر 3.1.9 در حال تکمیل رایگان

کدایگنایتر به شما این امکان را می‌دهد تا صفحات خود را به منظور رسیدن به حداکثر پرفورمنس کش کنید.

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

کش کردن چگونه کار می‌کند؟

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

فعال‌سازی قابلیت کش

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

$this->output->cache($n);

که در اینجا $n تعداد دقیقه‌هایی است که می‌خواهید صفحه تا بروزرسانی بعدی کش باقی بماند.

دستور بالا در هر جایی از متد می‌تواند نوشته شود. ترتیب نوشتن هیچ تاثیری در نتیجه ندارد، بنابراین این کد را در هر جایی که به نظرتان منطقی‌تر بود قرار دهید. هنگامی که این دستور در متد قرار داده شود، صفحات شما کش خواهند شد.

مهم

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

مهم

اگر تنظیمات کانفیگی که روی خروجی تاثیرگذار هستند را تغییر دهید، باید فایل‌های کش را به صورت دستی حذف کنید.

توجه

قبل از اینکه فایل‌های کش بازنویسی شوند، باید پرمیشن دایرکتوری application/cache/ را قابل نوشتن (writable) قرار دهید.

حذف کش‌ها

اگر دیگر تمایلی به کش کردن صفحات ندارید، می‌توانید دستوری که برای کش کردن نوشتید را حذف کنید. با این کار در زمان انقضای کش، فایل کش حذف شده و دیگر بروزرسانی نمی‌شود.

توجه

حذف تگ کش موجب حذف بلافاصله فایل‌های کش نمی‌شود. این فایل‌ها در زمان انقضا حذف خواهند شد.

اگر نیاز به حذف دستی فایل‌های کش دارید، از متد delete_cache() استفاده کنید:

// Deletes cache for the currently requested URI
$this->output->delete_cache();

// Deletes cache for /foo/bar
$this->output->delete_cache('/foo/bar');
منبع
Web Page Caching