symfony 2中的私有缓存不会生成

时间:2014-09-19 21:19:17

标签: php symfony caching http-caching

我正在尝试为我的应用程序使用HTTP缓存,但每次我将缓存设置为私有时,它都不会在app / cache文件夹中出现。

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

这是我失踪的东西吗?我正在尝试为我的网站需要身份验证的部分生成缓存。因此缓存应该特定于每个用户名,因为它只计算该用户的报告。

这就是我在做的事情:

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

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

    return $response;

1 个答案:

答案 0 :(得分:2)

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

在Symfony docs中阅读Public vs Private Responses

  

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

     

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

     
      
  • public:表示私有和都可以缓存响应   共享缓存;
  •   
  • private:表示全部或部分响应   message仅供单个用户使用,不得由a缓存   共享缓存。
  •   
     

Symfony保守地默认每个响应都是   私人的。利用共享缓存(如Symfony反向)   代理),响应将需要明确设置为公共。