我正在尝试为我的应用程序使用HTTP缓存,但每次我将缓存设置为私有时,它都不会在app / cache文件夹中出现。
对于公共缓存,一切正常,正在生成文件/文件夹。
这是我失踪的东西吗?我正在尝试为我的网站需要身份验证的部分生成缓存。因此缓存应该特定于每个用户名,因为它只计算该用户的报告。
这就是我在做的事情:
$response = $this->render('myTemplate.html.twig', array(
'username' => $username
));
$response->setMaxAge(600);
$response->setPrivate();
return $response;
答案 0 :(得分:2)
Symfony的http缓存充当公共(共享)反向代理服务器。这意味着它只会缓解公众的反应。
在Symfony docs中阅读Public vs Private Responses:
网关和代理缓存都被视为“共享”缓存 缓存的内容由多个用户共享。如果是用户特定的 响应被错误地存储在共享缓存中,它可能是 稍后返回给任意数量的不同用户。想象一下,如果你的 帐户信息被缓存,然后返回到每个后续 要求提供帐户页面的用户!
要处理这种情况,可以将每个响应设置为公开或 私人:
- public:表示私有和都可以缓存响应 共享缓存;
- private:表示全部或部分响应 message仅供单个用户使用,不得由a缓存 共享缓存。
Symfony保守地默认每个响应都是 私人的。利用共享缓存(如Symfony反向) 代理),响应将需要明确设置为公共。