我试图让我的 Symfony2 应用程序使用过期模型缓存页面,但它没有正确设置 s-maxage 并且浏览器总是返回 s-maxage=0 无论我将其设置为什么值。
我目前正在使用
public function indexAction()
{
$response = $this->render('HtgPageBundle:Default:fullPage.html.twig');
$response->setMaxAge(60);
$response->setSharedMaxAge(60);
return $response;
}
我没有设置使用 $response->setPublic(),因为这是使用 setSharedMaxAge() 自动完成的。
我从浏览器得到的响应总是
Cache-Control:max-age=60, public, s-maxage=0
X-Symfony-Cache:GET /page/privacy-policy: miss
但我期待:-
Cache-Control:max-age=60, public, s-maxage=60
X-Symfony-Cache:GET /page/privacy-policy: store
深入研究它,我发现 setSharedMaxAge 被调用了两次,一次是当我像上面那样调用它时,此时它正在设置正确的值。随后,它通过 Symfony\Component\HttpFoundation\Response::setTtl() 方法再次被调用,但这里将值设置为 0 但我不确定它为什么这样做。
我正在使用 Symfony v2.4.4
有什么建议么