Php symfony 2中的专用缓存未生成

Php symfony 2中的专用缓存未生成,php,symfony,caching,http-caching,Php,Symfony,Caching,Http Caching,我正在尝试对我的应用程序使用HTTP缓存,但每次我将缓存设置为private时,它都不会显示在app/cache文件夹中 对于公共缓存,一切正常,正在生成文件/文件夹 是不是我错过了什么?我正在尝试为需要身份验证的网站部分生成缓存。所以缓存应该针对每个用户名,因为它只统计该用户的报告 这就是我正在做的: $response = $this->render('myTemplate.html.twig', array( 'username' => $usernam

我正在尝试对我的应用程序使用HTTP缓存,但每次我将缓存设置为private时,它都不会显示在app/cache文件夹中

对于公共缓存,一切正常,正在生成文件/文件夹

是不是我错过了什么?我正在尝试为需要身份验证的网站部分生成缓存。所以缓存应该针对每个用户名,因为它只统计该用户的报告

这就是我正在做的:

    $response = $this->render('myTemplate.html.twig', array(
        'username' => $username
    ));

    $response->setMaxAge(600);
    $response->setPrivate();

    return $response;

Symfony的http缓存充当公共(共享)反向代理服务器。这意味着它只缓存公共响应

阅读Symfony文档:

网关缓存和代理缓存都被视为“共享”缓存 缓存的内容由多个用户共享。如果是用户特定的 响应曾经被共享缓存错误地存储过,可能是这样 稍后返回给任意数量的不同用户。想象一下如果你的 帐户信息被缓存,然后返回到每个后续的 用户谁要求他们的帐户页

为了处理这种情况,可以将每个响应设置为公共或 私人:

  • public:表示响应可以由private和private缓存 共享缓存
  • 私有:表示响应的全部或部分 消息是针对单个用户的,不能由用户缓存 共享缓存
Symfony保守地默认每个响应为 私有的利用共享缓存(如Symfony反转) 代理),响应需要显式设置为公共


我明白,但我也很困惑。我可以做些什么来缓存私有的、特定于内容的页面?你不应该这样做。私有缓存是浏览器的缓存。从技术上讲,可以通过这种方式配置Varnish之类的反向代理,但应该避免这种情况(因为它会为每个用户生成一个新文档)。我建议你阅读和阅读。我认为您正在尝试在其他类型的缓存工作得更好的情况下使用http缓存。另外,请记住,您可以使用ESI来缓存页面的共享部分。但据我所知,ESI也是公共的。是的,但您可以使用一个私有页面来缓存页面的部分(通过ESI)。这难道不允许客户端从另一个客户端请求页面的部分吗?