silverstripe-framework/docs/en/04_Changelogs/3.7.0.md
2018-06-05 10:30:17 +12:00

983 B

3.7.0

Versioned cache segmentation

The cache API now maintains separate cache pools for each versioned stage. This prevents users from caching draft data and then exposing it on the live stage.

// Before:
$cache = SS_Cache::factory('myapp');
Versioned::set_reading_mode('Stage.Live');
$cache->save('Some draft content. Not for public viewing yet.', 'my_key');
Versioned::set_reading_mode('Stage.Stage');
$cache->load('my_key'); // 'Some draft content. Not for public viewing yet'

// After:
$cache = SS_Cache::factory('myapp');
Versioned::set_reading_mode('Stage.Live');
$cache->save('Some draft content. Not for public viewing yet.', 'my_key');
Versioned::set_reading_mode('Stage.Stage');
$cache->load('my_key'); // null

Data that is not content sensitive can be cached across stages by simply opting out of the segmented cache with the disable-container argument.

$cache = SS_Cache::factory('myapp', 'Output', array('disable-container' => true));