【问题标题】:Symfony2 reverse proxy returns "stale invalid"Symfony2 反向代理返回“陈旧无效”
【发布时间】:2014-04-22 01:34:00
【问题描述】:

使用以下设置启用 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

对于 stale, invalid 响应,我得到的响应不是来自反向代理缓存,而是来自经历 MVC 周期的服务器。

感觉这里有几件事失败了:

  • 不从缓存中提供过时的内容;
  • 缓存未被重新验证;

有什么想法可以在哪里寻找原因?

【问题讨论】:

    标签: php symfony caching


    【解决方案1】:

    这在我看来很正常。

    您提到从缓存中提供过时的内容是有问题的。但是,这是正常行为。 “陈旧”意味着内容超过了它的 ttl(生存时间),不应再从缓存中提供服务。因此再次访问服务器,以获取新内容并重新填充缓存。

    【讨论】:

    • 据我了解,陈旧的内容仍应从缓存中提供,同时用新内容重新填充缓存。问题是缓存永远不会被重新填充。初始 ttl 过期后,继续从服务器提供内容。
    猜你喜欢
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    相关资源
    最近更新 更多