nginx – 在更新时提供陈旧的caching响应

nginx中我使用的是

proxy_cache_use_stale updating 

指令( http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_use_stale ),以便对失效的caching内容的并发请求仅向上游发送1个请求(非首先请求用陈旧内容响应第一个请求是更新内容)。

这工作得很好。

现在有没有办法让第一个请求立即响应陈旧的内容,同时触发更新?

现在,对于非首先失效的请求,响应时间非常好,但是第一个需要等到后端响应。 我更喜欢在caching更新之前提供陈旧的内容。

你正在寻找的是称为stale-while-revalidate(RFC 5861),它在nginx中被实现为一个名为proxy_cache_background_update的指令。 类似的function可以在Varnish 4和Squid中find,这被称为Collapsed Forwarding 。

此function是作为proxy_cache_background_update在nginx 1.11(2016年4月)中添加的