Laravel 展平:按 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);