Symfony2反向代理返回“陈旧无效”

时间:2014-03-16 23:05:51

标签: php symfony caching

使用以下设置启用Symfony2反向代理缓存(在开发环境中进行测试):

class AppCache extends HttpCache
{
    protected function getOptions()
    {
        return array(
            'debug'                  => true,
            'default_ttl'            => 20,
            'private_headers'        => array(),
            'allow_reload'           => false,
            'allow_revalidate'       => false,
            'stale_while_revalidate' => 21,
            'stale_if_error'         => 60,
        );
    }
}

服务器的响应如下。

从第一个请求(按预期):

X-Symfony-Cache:GET /api/posts?pageNumber=1: miss, store

从第二个请求和所有后续请求在20秒内(正如预期的那样,内容从缓存中提供):

X-Symfony-Cache:GET /api/posts?pageNumber=1: fresh

20秒后的请求(有问题):

X-Symfony-Cache:GET /api/posts?pageNumber=1: stale, invalid

使用陈旧,无效的响应,我得到的反应不是来自反向代理缓存,而是来自通过MVC循环的服务器。

感觉好像有些事情在这里失败了:

  • 未从缓存中提供陈旧内容;
  • 未重新验证缓存;

任何寻找原因的想法?

1 个答案:

答案 0 :(得分:1)

这在我眼中看起来很正常。

您提到从缓存中提供陈旧内容是有问题的。但是,这是正常行为。 '陈旧'表示内容超过了其ttl(生存时间),不应再从缓存中提供。因此,服务器再次被点击,以获取新内容并重新填充缓存。