Laravel Flatten:根据Saltshaker中的值清空缓存


Laravel Flatten: Empty Cache by values in Saltshaker

我有一个Laravel项目,它渲染了数百个网站。内容由后端系统提供。为了提高性能,我想用Anahkiasen''Flatten模块缓存完整的HTML。为了为每个网站生成自己的缓存,我在Flatten配置中的saltshaker数组中添加了三个值的组合。

我的问题是,我如何通过这三个值来清除缓存,从而为单个网站而不是所有数百个网站清除缓存。我试图用'Flatten::flushUrl()清除缓存,因为所有网站都有自己的子域。但是缓存没有被清除。

我发现散列是由saltshaker数组中的值生成的,其中包含HTTP请求类型和路由的附加信息。所以这个脚本对我有效,因为我只有一个缓存的路由:

$pages = $cached = (array) $this->app['flatten.storage']->get('cached');
$hash = $this->app['flatten']->computeHash('/');
foreach ($pages as $key => $page) {
    if ($hash === $page) {
        $this->app['cache']->forget($page);
        unset($cached[$key]);
    }
}
$this->app['flatten.storage']->set('cached', $cached);