SilverStripe 2.4 API Docs
  • Package
  • Class
  • Tree
  • Deprecated
Version: master
  • master
  • 3.1
  • 3.0
  • 2.4
  • tagfield

Packages

  • cms
    • assets
    • batchaction
    • batchactions
    • bulkloading
    • comments
    • content
    • core
    • export
    • publishers
    • reports
    • security
    • tasks
  • forms
    • actions
    • core
    • fields-basic
    • fields-dataless
    • fields-datetime
    • fields-files
    • fields-formatted
    • fields-formattedinput
    • fields-relational
    • fields-structural
    • transformations
    • validators
  • installer
  • None
  • PHP
  • sapphire
    • api
    • bulkloading
    • control
    • core
    • cron
    • dev
    • email
    • fields-formattedinput
    • filesystem
    • formatters
    • forms
    • i18n
    • integration
    • misc
    • model
    • parsers
    • search
    • security
    • tasks
    • testing
    • tools
    • validation
    • view
    • widgets

Classes

  • Aggregate
  • Aggregate_Relationship
  • ClassInfo
  • CSSContentParser
  • Extension
  • ManifestBuilder
  • Object
  • SS_Cache
  • TokenisedRegularExpression
  • ValidationResult
  • YamlFixture

Functions

  • _t
  • array_fill_keys
  • getClassFile
  • getSysTempDir
  • getTempFolder
  • increase_memory_limit_to
  • increase_time_limit_to
  • project
  • sapphire_autoload
  • singleton
  • stripslashes_recursively
  • translate_memstring

Class SS_Cache

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

Package: sapphire\core
Author: hfried
Located at sapphire/cache/Cache.php

Methods summary

protected static
# init( )

Initialize the 'default' named cache backend

Initialize the 'default' named cache backend

public static none
# add_backend( string $name, string $type, array $options = array() )

Add a new named cache backend

Add a new named cache backend

Parameters

$name
string
$name The name of this backend as a freeform string
$type
string
$type The Zend_Cache backend ('File' or 'Sqlite' or ...)
$options
array
$options The Zend_Cache backend options (see http://framework.zend.com/manual/en/zend.cache.html)

Returns

none
public static none
# pick_backend( string $name, string $for, integer $priority = 1 )

Pick a named cache backend for a particular named cache

Pick a named cache backend for a particular named cache

Parameters

$name
string
$name The name of the backend, as passed as the first argument to add_backend
$for
string
$for The name of the cache to pick this backend for (or 'any' for any backend)
$priority
integer
$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.

Returns

none
public static
# set_cache_lifetime( string $for, integer $lifetime = 600, integer $priority = 1 )

Set the cache lifetime for a particular named cache

Set the cache lifetime for a particular named cache

Parameters

$for
string
$for The name of the cache to set this lifetime for (or 'any' for all backends)
$lifetime
integer
$lifetime The lifetime of an item of the cache, in seconds, or -1 to disable caching
$priority
integer
$priority The priority. The highest priority setting is used. Unlike backends, 'any' is not special in terms of priority.
public static The
# factory( string $for, string $frontend = 'Output', array $frontendOptions = null )

Build a cache object

Build a cache object

Parameters

$for
string
$for The name of the cache to build the cache object for
$frontend
string
$frontend (optional) The type of Zend_Cache frontend to use. Output is almost always the best
$frontendOptions
array
$frontendOptions (optional) Any frontend options to use.

Returns

The
cache object. It has been partitioned so that actions on the object won't affect cache objects generated with a different $for value, even those using the same Zend_Backend -- Cache a calculation if (!($result = $cache->load($cachekey))) { $result = caluate some how; $cache->save($result); } return $result; -- Cache captured output if (!($cache->start($cachekey))) { // output everything as usual echo 'Hello world! '; echo 'This is cached ('.time().') '; $cache->end(); // output buffering ends } -- Invalidate an element $cache->remove($cachekey); -- Clear the cache (warning - this clears the entire backend, not just this named cache partition) $cache->clean(Zend_Cache::CLEANING_MODE_ALL); See the Zend_Cache documentation at http://framework.zend.com/manual/en/zend.cache.html for more

Magic methods summary

Properties summary

protected static array $backends
#
protected static array $backend_picks
#
protected static array $cache_lifetime
#

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.
Use the Silverstripe Forum to ask questions.
blog comments powered by Disqus
SilverStripe 2.4 API Docs API documentation generated by ApiGen 2.8.0