Symfony2 HttpCache setSharedMaxAge()始终为0

时间:2014-05-22 14:49:05

标签: 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->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

任何建议

2 个答案:

答案 0 :(得分:0)

事实证明,这个问题是由Sonata Block Bundle中的事件监听器引入的。您可以通过将以下内容添加到config.yml文件

来禁用为sonata块包缓存
sonata_block:
    http_cache:
        listener: false

完整详情 - http://www.mist-labs.com/blog/using-setsharedmaxage-with-httpcache-in-symfony2-always-returns-s-maxage-0

答案 1 :(得分:0)