在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月)中添加的