我用Cakephp 3.5创建了一个多站点应用程序。到目前为止,我对它很满意,但我有一个特别的问题。我想在站点范围内保留某些缓存组。例如,如果我想清除站点1的产品组,则不应清除站点2的产品。
我知道我可以拥有多个配置组,但这对我不起作用,因为网站数量是动态的,可以立即从管理面板创建新网站。
有没有办法扩展缓存引擎?
答案 0 :(得分:0)
我决定扩展MemcachedEngine,因为我希望能够根据需要动态更改前缀。这对于克隆产品等批量修改非常有用。
protected _key()方法是所有引擎继承的CacheEngine抽象类的成员。
Site-Key正被寻找特定请求标头的中间件添加到应用配置中。
我在评论中修改了ndm建议的前缀。
class PrefixedMemcachedEngine extends MemcachedEngine
{
private $_initCachePrefix = '';
public function init(array $config = [])
{
$this->_initCachePrefix = $config['prefix'] ?? '';
return parent::init($config);
}
protected function _key($key)
{
$this->_config['prefix'] = $this->_initCachePrefix . Configure::read('Site-Key');
return parent::_key($key);
}
}