我正在使用 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