Php symfony 2中的专用缓存未生成
我正在尝试对我的应用程序使用HTTP缓存,但每次我将缓存设置为private时,它都不会显示在app/cache文件夹中 对于公共缓存,一切正常,正在生成文件/文件夹 是不是我错过了什么?我正在尝试为需要身份验证的网站部分生成缓存。所以缓存应该针对每个用户名,因为它只统计该用户的报告 这就是我正在做的: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
$response = $this->render('myTemplate.html.twig', array(
'username' => $username
));
$response->setMaxAge(600);
$response->setPrivate();
return $response;
Symfony的http缓存充当公共(共享)反向代理服务器。这意味着它只缓存公共响应 阅读Symfony文档: 网关缓存和代理缓存都被视为“共享”缓存 缓存的内容由多个用户共享。如果是用户特定的 响应曾经被共享缓存错误地存储过,可能是这样 稍后返回给任意数量的不同用户。想象一下如果你的 帐户信息被缓存,然后返回到每个后续的 用户谁要求他们的帐户页 为了处理这种情况,可以将每个响应设置为公共或 私人:
- public:表示响应可以由private和private缓存 共享缓存李>
- 私有:表示响应的全部或部分 消息是针对单个用户的,不能由用户缓存 共享缓存
我明白,但我也很困惑。我可以做些什么来缓存私有的、特定于内容的页面?你不应该这样做。私有缓存是浏览器的缓存。从技术上讲,可以通过这种方式配置Varnish之类的反向代理,但应该避免这种情况(因为它会为每个用户生成一个新文档)。我建议你阅读和阅读。我认为您正在尝试在其他类型的缓存工作得更好的情况下使用http缓存。另外,请记住,您可以使用ESI来缓存页面的共享部分。但据我所知,ESI也是公共的。是的,但您可以使用一个私有页面来缓存页面的部分(通过ESI)。这难道不允许客户端从另一个客户端请求页面的部分吗?