Symfony2 HttpCache setSharedMaxAge()始终为0

Symfony2 HttpCache setSharedMaxAge()始终为0,symfony,caching,http-caching,s-maxage,Symfony,Caching,Http Caching,S Maxage,我试图让我的Symfony2应用程序使用过期模型缓存页面,但它没有正确设置s-maxage,并且无论我将其设置为什么值,浏览器总是返回s-maxage=0 我目前正在使用 public function indexAction() { $response = $this->render('HtgPageBundle:Default:fullPage.html.twig'); $response->setMaxAge(60); $response->set

我试图让我的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;
}
我没有设置used$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,但我不确定它为什么这样做

我使用的是symfonyv2.4.4


任何建议

都证明这个问题是由Sonata Block Bundle中的事件侦听器引入的。通过将以下内容添加到config.yml文件中,可以禁用sonata block bundle的缓存

sonata_block:
    http_cache:
        listener: false
完整详细信息-

我刚刚修复了它:

因此不再需要禁用侦听器