Zend_Cache provides a flexible approach toward caching data, including support for tagging, manipulating, iterating, and removing data.
Question: What is Zend Cache?
It is Inbuilt component of zend framework which is used to speed up the application by using the caching concept.
Question: Why we use Zend Cache?
We use Zend cache for different purpose are following
- Increase the website Performance.
- Reduce the load on database.
- Reduce the load of api, if using in application.
- To get the result faster.
What is the use of Zend Cache?
We can speedup our application as well as can reduce the burdon on database and API.
Zend_Cache use the file system to store the cache. We have option in zend cache to use the other caching component like Memcached, Sqlite, ibmemcached,Apc,Xcache and ZendPlatform etc. In this tutorial we will understand the zend_cache with file system.
How to Setup Zend Cache?
Step1: Add Following function Bootstrap
public function _initCache() { $cache = Zend_Cache::factory( 'Core', 'File', array( 'lifetime' => 3600 * 24 * 7, /*caching time is 7 days*/ 'automatic_serialization' => true ), array('cache_dir' => APPLICATION_PATH . '/cache' /* This is caching folder where caching data will be stored and it must be writable by apache **/ ) ); Zend_Registry::set('Cache', $cache); /* set the cache object in zend_registery so that you can globally access*/ }Step2: cache folder must be writeable by PHP
Step3: Now, Just use the zend cache
/* get the cache object */ $cache = Zend_Registry::get('Cache'); /* create a unique cache key */ $cacheKey = "mydata"; $result = array(); if (empty($cacheKey) || ($result = $cache->load($cacheKey)) == false) { /* Here Process the and store the data in $result variable */ $cache->save($result, $cacheKey); }
What is Tagging in Zend Cache?
Tags are a way to categorize cache records. You can add two OR more type of records in single tag. You can create unlimited tags and also can add unlimited records in single tag.
How to used Tagging in Zend Cache.
/* get the cache object */ $cache = Zend_Registry::get('Cache'); /* create a unique cache key */ $cacheKey = "mydata"; $result = array(); if (empty($cacheKey) || ($result = $cache->load($cacheKey)) == false) { /* Here Process the and store the data in $result variable */ $cache->save($result, $cacheKey , array('Tags')); }
Can we add multiple Tags for 1 Record?
Yes, We can do.
$cache->save($result, $cacheKey , array('Tag1','Tag2','Tag3'));
How can we clean one cache?
$cache->remove('idToRemove');
How to clean all records?
$cache->clean(Zend_Cache::CLEANING_MODE_ALL);
How to clean outdated records?
$cache->clean(Zend_Cache::CLEANING_MODE_OLD);
How to clean all records of one/more tags?
$cache->clean( Zend_Cache::CLEANING_MODE_MATCHING_TAG, array('Tag1', 'Tag2') );