我正在尝试删除或更新源图像时删除缓存的图像(使用LiipImagineBundle创建)。我已经发现可以使用CacheManager(https://github.com/liip/LiipImagineBundle/issues/132)完成它 问题是我无法弄清楚如何正确使用它。除了这三行之外,我还需要为代码添加什么(比如库):
$cacheManager = $this->get('liip_imagine.cache.manager');
$cacheManager->resolve($this->getRequest(),$pngPath,$filter);
$cacheManager->remove($pngPath, $filter);
我相信应该有像
这样的东西 $cacheManager = new CacheManager();
如果有人能够更详细地解释我如何做到这一点,我将非常感激。
答案 0 :(得分:1)
所以,例如在你的控制器中:
/**
* Remove an image in the cache based on its relative path and the filter applied to it
*
* @param string $path
* @param string $filter
*
* @return void
*/
protected function removeCachedImageAction($path, $filter)
{
$cacheManager = $this->container->get('liip_imagine.cache.manager');
// Remove the cached image corresponding to that path & filter, if it is stored
if ($cacheManager->isStored($path, $filter)) {
$cacheManager->remove($path, $filter);
}
}
/**
* An action that doesn't do much except testing the function above
*
* @param Request $request
*
* @return void
*/
protected function whateverAction(Request $request)
{
$path = //... probably from the request
$filter = //... probably from the request
// Remove the cached image
$this->removeCachedImage($path, $filter);
// ...
}
正如您在CacheManager中所看到的,您要使用的功能是:
public function remove($paths = null, $filters = null){ ... }
如果$paths
为null
,则该函数假定您要删除已使用{{1}解析的所有路径的缓存图像提供。
如果$filters
为$filters
,则该函数会假定您要删除与之前已解决的null
相对应的缓存图像,并且之前已使用 ALL解析过滤器强>
如果$paths
和$paths
为$filters
,则该函数假定您要删除与所有路径和所有过滤器对应的缓存图像。基本上所有的CACHED IMAGES。