我试图让我的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
任何建议
答案 0 :(得分:0)
事实证明,这个问题是由Sonata Block Bundle中的事件监听器引入的。您可以通过将以下内容添加到config.yml文件
来禁用为sonata块包缓存sonata_block:
http_cache:
listener: false
答案 1 :(得分:0)