使用以下设置启用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循环的服务器。
感觉好像有些事情在这里失败了:
任何寻找原因的想法?
答案 0 :(得分:1)
这在我眼中看起来很正常。
您提到从缓存中提供陈旧内容是有问题的。但是,这是正常行为。 '陈旧'表示内容超过了其ttl(生存时间),不应再从缓存中提供。因此,服务器再次被点击,以获取新内容并重新填充缓存。