在后台更新nginx缓存

时间:2013-07-05 12:24:18

标签: nginx

我有一个nginx服务器充当第三方API的代理,有时对API的请求可能有点慢,而依赖较慢的API调用的页面可能需要很长时间才能加载缓存已过期。

无论如何都会发生类似以下情况:

  • 请求进入代理,缓存中没有任何内容,因此它将请求发送到API并缓存它。
  • 后续请求导致代理立即返回缓存结果
  • 缓存过期
  • 下一个请求导致代理服务于过时的缓存结果,但是不知何故nginx从API获取新内容并更新其缓存。
  • 当缓存已更新时,用户开始看到更新的内容。

关键是当nginx在提供陈旧内容后检索新内容时,所以发出请求的用户不必等待它完成。

这可能吗?

1 个答案:

答案 0 :(得分:1)

我认为最接近的行为将是下一个:

  1. 如果缓存项已停止,则第一个请求将等待 来自上游(API)服务器的响应。
  2. 与此同时,对同一缓存项的其他请求将收到停滞的结果。
  3. proxy_cache_use_stale updating可以启用此行为。

    有关详情,请参阅proxy_cache_use_stale文档。 您也可能对proxy_cache_lock

    感兴趣

    来源:NGINX caching webinar and notes

    实际上,NGINX支持问题中提到的行为。对不起,回答错误。请参阅:https://stackoverflow.com/a/40134179/1079966