Symfony2 HttpCache setSharedMaxAge()始终为0
我试图让我的Symfony2应用程序使用过期模型缓存页面,但它没有正确设置s-maxage,并且无论我将其设置为什么值,浏览器总是返回s-maxage=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
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
完整详细信息-我刚刚修复了它:
因此不再需要禁用侦听器