diff options
author | Derek Jones <derek.jones@ellislab.com> | 2011-10-05 22:08:21 +0200 |
---|---|---|
committer | Derek Jones <derek.jones@ellislab.com> | 2011-10-05 22:08:21 +0200 |
commit | 4f0c8cb509f1a16e62bc1ddf23d035fcb06e0214 (patch) | |
tree | e0514a8f423613cfb31717e71c04ba186df1b0ae /user_guide_src/source/libraries/caching.rst | |
parent | 044a5221843cc2d88b936f3e658a1df4bc28cfe2 (diff) | |
parent | 57ccd441085a4d387a0c7acdd7eec00ff9c1077a (diff) |
Merge branch 'develop' of github.com:EllisLab/CodeIgniter into develop
Diffstat (limited to 'user_guide_src/source/libraries/caching.rst')
-rw-r--r-- | user_guide_src/source/libraries/caching.rst | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/user_guide_src/source/libraries/caching.rst b/user_guide_src/source/libraries/caching.rst new file mode 100644 index 000000000..2f06d29f9 --- /dev/null +++ b/user_guide_src/source/libraries/caching.rst @@ -0,0 +1,220 @@ +############## +Caching Driver +############## + +CodeIgniter features wrappers around some of the most popular forms of +fast and dynamic caching. All but file-based caching require specific +server requirements, and a Fatal Exception will be thrown if server +requirements are not met. + +.. contents:: Table of Contents + +************* +Example Usage +************* + +The following example will load the cache driver, specify `APC <#apc>`_ +as the driver to use, and fall back to file-based caching if APC is not +available in the hosting environment. + +:: + + $this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file')); + + if ( ! $foo = $this->cache->get('foo')) + { + echo 'Saving to the cache!<br />'; + $foo = 'foobarbaz!'; + + // Save into the cache for 5 minutes + $this->cache->save('foo', $foo, 300); + } + + echo $foo; + +****************** +Function Reference +****************** + +.. php:class:: CI_Cache + +is_supported() +=============== + + .. php:method:: is_supported ( $driver ) + + This function is automatically called when accessing drivers via + $this->cache->get(). However, if the individual drivers are used, make + sure to call this function to ensure the driver is supported in the + hosting environment. + + :param string $driver: the name of the caching driver + :returns: TRUE if supported, FALSE if not + :rtype: Boolean + + :: + + if ($this->cache->apc->is_supported() + { + if ($data = $this->cache->apc->get('my_cache')) + { + // do things. + } + } + + +get() +===== + + .. php:method:: get ( $id ) + + This function will attempt to fetch an item from the cache store. If the + item does not exist, the function will return FALSE. + + :param string $id: name of cached item + :returns: The item if it exists, FALSE if it does not + :rtype: Mixed + + :: + + $foo = $this->cache->get('my_cached_item'); + + +save() +====== + + .. php:method:: save ( $id , $data [, $ttl]) + + This function will save an item to the cache store. If saving fails, the + function will return FALSE. + + :param string $id: name of the cached item + :param mixed $data: the data to save + :param int $ttl: Time To Live, in seconds (default 60) + :returns: TRUE on success, FALSE on failure + :rtype: Boolean + + :: + + $this->cache->save('cache_item_id', 'data_to_cache'); + +delete() +======== + + .. php:method:: delete ( $id ) + + This function will delete a specific item from the cache store. If item + deletion fails, the function will return FALSE. + + :param string $id: name of cached item + :returns: TRUE if deleted, FALSE if the deletion fails + :rtype: Boolean + + :: + + $this->cache->delete('cache_item_id'); + +clean() +======= + + .. php:method:: clean ( ) + + This function will 'clean' the entire cache. If the deletion of the + cache files fails, the function will return FALSE. + + :returns: TRUE if deleted, FALSE if the deletion fails + :rtype: Boolean + + :: + + $this->cache->clean(); + +cache_info() +============= + + .. php:method:: cache_info ( ) + + This function will return information on the entire cache. + + :returns: information on the entire cache + :rtype: Mixed + + :: + + var_dump($this->cache->cache_info()); + + .. note:: The information returned and the structure of the data is dependent + on which adapter is being used. + + +get_metadata() +=============== + + .. php:method:: get_metadata ( $id ) + + This function will return detailed information on a specific item in the + cache. + + :param string $id: name of cached item + :returns: metadadta for the cached item + :rtype: Mixed + + :: + + var_dump($this->cache->get_metadata('my_cached_item')); + + .. note:: The information returned and the structure of the data is dependent + on which adapter is being used. + + +******* +Drivers +******* + +Alternative PHP Cache (APC) Caching +=================================== + +All of the functions listed above can be accessed without passing a +specific adapter to the driver loader as follows:: + + $this->load->driver('cache'); + $this->cache->apc->save('foo', 'bar', 10); + +For more information on APC, please see +`http://php.net/apc <http://php.net/apc>`_ + +File-based Caching +================== + +Unlike caching from the Output Class, the driver file-based caching +allows for pieces of view files to be cached. Use this with care, and +make sure to benchmark your application, as a point can come where disk +I/O will negate positive gains by caching. + +All of the functions listed above can be accessed without passing a +specific adapter to the driver loader as follows:: + + $this->load->driver('cache'); + $this->cache->file->save('foo', 'bar', 10); + +Memcached Caching +================= + +Multiple Memcached servers can be specified in the memcached.php +configuration file, located in the application/config/ directory. + +All of the functions listed above can be accessed without passing a +specific adapter to the driver loader as follows:: + + $this->load->driver('cache'); + $this->cache->memcached->save('foo', 'bar', 10); + +For more information on Memcached, please see +`http://php.net/memcached <http://php.net/memcached>`_ + +Dummy Cache +=========== + +This is a caching backend that will always 'miss.' It stores no data, +but lets you keep your caching code in place in environments that don't +support your chosen cache. |