'session' => 'CiviCRM Session',
'long' => 'long',
'groups' => 'contact groups',
+ 'navigation' => 'navigation',
];
foreach ($basicCaches as $cacheSvc => $cacheGrp) {
+ $definitionParams = [
+ 'name' => $cacheGrp,
+ 'type' => ['*memory*', 'SqlGroup', 'ArrayCache'],
+ ];
+ // For Caches that we don't really care about the ttl for and/or maybe accessed
+ // fairly often we use the fastArrayDecorator which improves reads and writes, these
+ // caches should also not have concurrency risk.
+ $fastArrayCaches = ['groups'];
+ if (in_array($cacheSvc, $fastArrayCaches)) {
+ $definitionParams['withArray'] = 'fast';
+ }
$container->setDefinition("cache.{$cacheSvc}", new Definition(
'CRM_Utils_Cache_Interface',
- [
- [
- 'name' => $cacheGrp,
- 'type' => ['*memory*', 'SqlGroup', 'ArrayCache'],
- ],
- ]
+ [$definitionParams]
))->setFactory('CRM_Utils_Cache::create');
}
+ // PrevNextCache cannot use memory or array cache at the moment because the
+ // Code in CRM_Core_BAO_PrevNextCache assumes that this cache is sql backed.
+ $container->setDefinition("cache.prevNextCache", new Definition(
+ 'CRM_Utils_Cache_Interface',
+ [
+ [
+ 'name' => 'CiviCRM Search PrevNextCache',
+ 'type' => ['SqlGroup'],
+ ],
+ ]
+ ))->setFactory('CRM_Utils_Cache::create');
+
$container->setDefinition('sql_triggers', new Definition(
'Civi\Core\SqlTriggers',
[]