0

我正在使用 symfony 反向代理进行缓存。

我有 2 个私人缓存。你可以把它想象成一个私人网上商店:物品列表是我的第一个私人缓存,因为需要对用户进行身份验证。该组件是我的第二个私有缓存,因为它包含动态数据,仅供登录用户使用。

应用内核

$kernel = new AppKernel($env, $debug);
$kernel->loadClassCache();
$kernel = new AppCache($kernel); //  <-- enable cache

配置.yml

framework:
    esi:       { enabled: true }
    fragments: { path: /_proxy }

page.html.twig

<header>{{  render_esi(controller('AppBundle:Menu:displayMenu')) }}</header>
<main>cached private stuff</main>

PageController - IndexAction:

    $response = new Response();
    $response->setPrivate();
    $response->setMaxAge(180); // 3 minutes for the content
    return $this->render('page.html.twig', [], $response);

MenuController - DisplayMenuAction:

    $response = new Response();
    $response->setPrivate();
    $response->setMaxAge(10); // only 10 second for the menu
    return $this->render('page.html.twig', [], $response);

在 prod 环境中,它显示在缓存头中

缓存控制:max-age=0, public, s-maxage=15

我有 2 个私有缓存,为什么缓存标头作为公共发送?

编辑:

当我评论 esi_render 标记时,该页面的缓存私有时间为 3 分钟。(如预期)

我检查了我没有其他使用该命令的侦听器bin/console debug:container --tag=kernel.event_subscriber

4

0 回答 0