Source Location: /sapphire/cache/Cache.php
Inheritance:
Summary: SS_Cache provides a bunch of static functions wrapping the Zend_Cache system in something a little more easy to use with the SilverStripe config system.
public
static add_backend ( $name, $type, [$options = array()] )
|
Add a new named cache backend |
public
static factory ( $for, [$frontend = 'Output'], [$frontendOptions = null] )
|
Build a cache object |
protected
static init ( )
|
Initialize the 'default' named cache backend |
public
static pick_backend ( $name, $for, [$priority = 1] )
|
Pick a named cache backend for a particular named cache |
public
static set_cache_lifetime ( $for, [$lifetime = 600], [$priority = 1] )
|
Set the cache lifetime for a particular named cache |
protected
static $backends
|
|
protected
static $backend_picks
|
|
protected
static $cache_lifetime
|
SS_Cache provides a bunch of static functions wrapping the Zend_Cache system in something a little more easy to use with the SilverStripe config system.
A Zend_Cache has both a frontend (determines how to get the value to cache, and how to serialize it for storage) and a backend (handles the actual storage).
Rather than require library code to specify the backend directly, cache consumers provide a name for the cache backend they want. The end developer can then specify which backend to use for each name in their project's _config.php. They can also use 'all' to provide a backend for all named caches
End developers provide a set of named backends, then pick the specific backend for each named cache. There is a default File cache set up as the 'default' named backend, which is assigned to 'all' named caches
USING A CACHE
$cache = SS_Cache::factory('foo') ; // foo is any name (try to be specific), and is used to get configuration & storage info
if (!($result = $cache->load($cachekey))) { $result = caluate some how; $cache->save($result); }
return $result;
Normally there's no need to remove things from the cache - the cache backends clear out entries based on age & maximum allocated storage. If you include the version of the object in the cache key, even object changes don't need any invalidation
DISABLING CACHING IN DEV MOVE
(in _config.php)
if (Director::isDev()) SS_Cache::set_cache_lifetime('any', -1, 100);
USING MEMCACHED AS STORE
(in _config.php)
SS_Cache::add_backend('primary_memcached', 'Memcached', array('host' => 'localhost', 'port' => 11211, 'persistent' => true, 'weight' => 1, 'timeout' => 5, 'retry_interval' => 15, 'status' => true, 'failure_callback' => '' ) );
SS_Cache::pick_backend('primary_memcached', 'any', 10); SS_Cache::pick_backend('default', 'aggregate', 20); // Aggregate needs a backend with tag support, which memcached doesn't provide
USING APC AND FILE AS TWO LEVEL STORE
(in _config.php)
SS_Cache::add_backend('two-level', 'TwoLevels', array( 'slow_backend' => 'File', 'fast_backend' => 'Apc', 'slow_backend_options' => array('cache_dir' => TEMP_FOLDER . DIRECTORY_SEPARATOR . 'cache') ));
SS_Cache::pick_backend('two-level', 'any', 10); // No need for special backend for aggregate - TwoLevels with a File slow backend supports tags
[ Top ]
static none add_backend(
string
$name, string
$type, [array
$options = array()])
[line 89]
Add a new named cache backend
$name
- The name of this backend as a freeform string
$type
- The Zend_Cache backend ('File' or 'Sqlite' or ...)
$options
- The Zend_Cache backend options (see http://framework.zend.com/manual/en/zend.cache.html)
[ Top ]
static The factory(
string
$for, [string
$frontend = 'Output'], [array
$frontendOptions = null])
[line 168]
Build a cache object
$for
- The name of the cache to build the cache object for
$frontend
- (optional) The type of Zend_Cache frontend to use. Output is almost always the best
$frontendOptions
- (optional) Any frontend options to use.
[ Top ]
static void init(
)
[line 73]
Initialize the 'default' named cache backend
[ Top ]
static none pick_backend(
string
$name, string
$for, [integer
$priority = 1])
[line 103]
Pick a named cache backend for a particular named cache
$name
- The name of the backend, as passed as the first argument to add_backend
$for
- The name of the cache to pick this backend for (or 'any' for any backend)
$priority
- The priority of this pick - the call with the highest number will be the actual backend picked. A backend picked for a specific cache name will always be used instead of 'any' if it exists, no matter the priority.
[ Top ]
static void set_cache_lifetime(
string
$for, [integer
$lifetime = 600], [integer
$priority = 1])
[line 119]
Set the cache lifetime for a particular named cache
$for
- The name of the cache to set this lifetime for (or 'any' for all backends)
$lifetime
- The lifetime of an item of the cache, in seconds, or -1 to disable caching
$priority
- The priority. The highest priority setting is used. Unlike backends, 'any' is not special in terms of priority.
[ Top ]
Comments
Comment policy: Please use comments for tips and corrections about the described functionality. Comments are moderated, we reserve the right to remove comments that are inappropriate or are no longer relevant.
blog comments powered by DisqusUse the Silverstripe Forum to ask questions.