| ################ |
| Web Page Caching |
| ################ |
| |
| CodeIgniter lets you cache your pages in order to achieve maximum |
| performance. |
| |
| Although CodeIgniter is quite fast, the amount of dynamic information |
| you display in your pages will correlate directly to the server |
| resources, memory, and processing cycles utilized, which affect your |
| page load speeds. By caching your pages, since they are saved in their |
| fully rendered state, you can achieve performance that nears that of |
| static web pages. |
| |
| How Does Caching Work? |
| ====================== |
| |
| Caching can be enabled on a per-page basis, and you can set the length |
| of time that a page should remain cached before being refreshed. When a |
| page is loaded for the first time, the cache file will be written to |
| your application/cache folder. On subsequent page loads the cache file |
| will be retrieved and sent to the requesting user's browser. If it has |
| expired, it will be deleted and refreshed before being sent to the |
| browser. |
| |
| .. note: The Benchmark tag is not cached so you can still view your page |
| load speed when caching is enabled. |
| |
| Enabling Caching |
| ================ |
| |
| To enable caching, put the following tag in any of your controller |
| methods:: |
| |
| $this->output->cache($n); |
| |
| Where ``$n`` is the number of **minutes** you wish the page to remain |
| cached between refreshes. |
| |
| The above tag can go anywhere within a method. It is not affected by |
| the order that it appears, so place it wherever it seems most logical to |
| you. Once the tag is in place, your pages will begin being cached. |
| |
| .. important:: Because of the way CodeIgniter stores content for output, |
| caching will only work if you are generating display for your |
| controller with a :doc:`view <./views>`. |
| |
| .. important:: If you change configuration options that might affect |
| your output, you have to manually delete your cache files. |
| |
| .. note:: Before the cache files can be written you must set the file |
| permissions on your *application/cache/* directory such that |
| it is writable. |
| |
| Deleting Caches |
| =============== |
| |
| If you no longer wish to cache a file you can remove the caching tag and |
| it will no longer be refreshed when it expires. |
| |
| .. note:: Removing the tag will not delete the cache immediately. It will |
| have to expire normally. |
| |
| If you need to manually delete the cache, you can use the ``delete_cache()`` |
| method:: |
| |
| // Deletes cache for the currently requested URI |
| $this->output->delete_cache(); |
| |
| // Deletes cache for /foo/bar |
| $this->output->delete_cache('/foo/bar'); |