Zend\Cache\Storage\Adapter ZF2 中带有参数的 clearByTags 标签
Zend\Cache\Storage\Adapter clearByTags Tag with parameters in ZF2
我正在使用 bramstroker 的 StrokerCache Zend Framework 2 module which itself uses Zend\Cache and has the method clearByTags()。
如果我想清除缓存,以下方法可以正常工作:
public function fooAction()
{
$cs = $this->getServiceLocator()->get('strokercache_service');
var_dump($cs->clearByTags(array(
'controller_ClientCms\Controller\Cms'
)));
}
但是,如果我想包含参数怎么办?
$cs->clearByTags(array(
'controller_ClientCms\Controller\Cms,param_action:index,param_client:foo'
));
...不有效吗。
缓存目录中的标记文件如下所示:
strokercache_route_home/client
strokercache_controller_ClientCms\Controller\Cms
strokercache_param_action_index
strokercache_param_client_foo
答案很简单:请使用ever标签作为自己的数组元素:
$cs->clearByTags(array(
'controller_ClientCms\Controller\Cms',
'param_action_index',
'param_client_foo',
));
由于我不使用该模块,因此无法对其进行测试,但经过快速代码审查后,它应该可以工作。见 https://github.com/bramstroker/zf2-fullpage-cache/blob/master/src/StrokerCache/Controller/CacheController.php#L41
我正在使用 bramstroker 的 StrokerCache Zend Framework 2 module which itself uses Zend\Cache and has the method clearByTags()。
如果我想清除缓存,以下方法可以正常工作:
public function fooAction()
{
$cs = $this->getServiceLocator()->get('strokercache_service');
var_dump($cs->clearByTags(array(
'controller_ClientCms\Controller\Cms'
)));
}
但是,如果我想包含参数怎么办?
$cs->clearByTags(array(
'controller_ClientCms\Controller\Cms,param_action:index,param_client:foo'
));
...不有效吗。
缓存目录中的标记文件如下所示:
strokercache_route_home/client
strokercache_controller_ClientCms\Controller\Cms
strokercache_param_action_index
strokercache_param_client_foo
答案很简单:请使用ever标签作为自己的数组元素:
$cs->clearByTags(array(
'controller_ClientCms\Controller\Cms',
'param_action_index',
'param_client_foo',
));
由于我不使用该模块,因此无法对其进行测试,但经过快速代码审查后,它应该可以工作。见 https://github.com/bramstroker/zf2-fullpage-cache/blob/master/src/StrokerCache/Controller/CacheController.php#L41