【问题标题】:Symfony2 HttpCache setSharedMaxAge() always 0Symfony2 HttpCache setSharedMaxAge() 总是 0
【发布时间】: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


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      原来这个问题是由 Sonata Block Bundle 中的事件监听器引入的。您可以通过将以下内容添加到您的 config.yml 文件来禁用对奏鸣曲块包的缓存

      sonata_block:
          http_cache:
              listener: false
      

      详细信息 - http://www.mist-labs.com/blog/using-setsharedmaxage-with-httpcache-in-symfony2-always-returns-s-maxage-0

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多