Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How does CodeIgniter output caching work?

I read this link :-

http://codeigniter.com/user_guide/general/caching.html

It is written that :-

When a page is loaded for the first time, the cache file will be written to your system/cache folder

and that we can cache a view by $this->output->cache(60);. But how does it actually work? What if regularly my users keep updating and deleting records as a result of which view changes very often. Will it show the modified data? or will the cache bring back the old stale data? (before inserts and updates)? If it automatically manages and brings fresh data from the database, then what is purpose of specifying the minutes in cache function?

Thanks in advance :)

like image 297
TCM Avatar asked Jul 05 '10 16:07

TCM


People also ask

How does CodeIgniter cache work?

CodeIgniter's query caching system happens dynamically when your pages are viewed. When caching is enabled, the first time a web page is loaded, the query result object will be serialized and stored in a text file on your server.

How do I load cache in CodeIgniter?

Under Windows, you can also utilize the WinCache driver. All of the methods listed above can be accessed without passing a specific adapter to the driver loader as follows: $this->load->driver('cache'); $this->cache->wincache->save('foo', 'bar', 10); For more information on WinCache, please see http://php.net/wincache.

What is Memcached in CodeIgniter?

Memcached is an object caching framework. It is essentially used to cache the database queries, making a difference in dynamic websites like Drupal and WordPress to serve pages quicker. It can moreover significantly decrease resource use on an active web server by reducing calls to the database.


1 Answers

The way codeigniter's caching works generally is this:

A page request is made. Codeigniter (before very much of the framework has even been loaded) does a hash of the current url and if it finds that filename in the cache directory, it serves that.

The only way you can get fresh data is to manually delete the files. When codeigniter doesn't find the file from the hash it generated, it dynamically creates the page.

Codeigniter's implementation is called "full page" caching, and as so, is limited in it's usefullness. There's a partial caching library I've looked into from Phil Sturgeon here: http://philsturgeon.co.uk/code/codeigniter-cache

Honestly, for most projects, full page caching really isn't all that useful. In fact, the projects that I need full page caching I don't even leave that up to codeigniter (I leave it to the webserver: it's way faster).

I'd guess what you're looking for is a partial caching method; most people would prefer this. Look into APC if you're using a single server or Memcached if you have multiple servers.

Good Luck.

like image 110
Matthew Avatar answered Sep 27 '22 20:09

Matthew