我试图使用symfony缓存。
在我的控制器中我写了这个片段
public function indexAction(Request $request)
{
$response = $this->render('default/index.html.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..'),
]);
$response->setMaxAge(10);
$response->setPublic();
return $response;
}
在我的树枝上我有一个函数random(100)
然后我在app_dev.php和app.php中启用了$kernel = new AppCache($kernel);
刷新时我看到相同的“随机数”10秒钟,没关系。
如果我省略$response->setPublic();
,缓存变为私有,我总是有不同的数字。我也尝试登录我的应用程序,但缓存似乎不起作用
我还尝试在appCache()
中添加getOptionsclass AppCache extends HttpCache
{
protected function getOptions()
{
return array(
'debug' => false,
'default_ttl' => 0,
'private_headers' => array('Authorization', 'Cookie'),
'allow_reload' => false,
'allow_revalidate' => false,
'stale_while_revalidate' => 2,
'stale_if_error' => 60,
);
}
}
答案 0 :(得分:3)
如果缓存是私有,您告诉反向代理您不希望缓存响应。 Symfony将发送此标题:
Cache-Control: private
这绕过了中间代理,因为响应是针对单个用户的。在这种情况下,您使用浏览器缓存。如果您不想这样做,请将其设置为public
。
您可以在此处详细了解:public vs private response。