【发布时间】:2014-05-22 14:49:05
【问题描述】:
我正在尝试让我的 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
任何建议
【问题讨论】:
标签: symfony caching http-caching s-maxage