Nginx proxy_cache_background_update清除原始错误缓存

时间:2018-06-16 11:52:58

标签: nginx caching

proxy_cache_background_update onproxy_cache_use_stale updating结合使用时,如果原始服务器返回错误,客户端将继续收到陈旧内容。

当后台更新从源服务器收到错误时,是否可以清除缓存项?

我的目标是缩短响应时间,我不想在原始服务器关闭时继续提供过时的内容。仅在更新缓存时。

1 个答案:

答案 0 :(得分:0)

虽然不是完美的解决方案。通过关闭proxy_cache_use_stale updating并让源服务器在缓存控制头中以stale-while-revalidate响应,我能够实现此行为。

例如;我的源服务器以标头响应:

cache-control: public, max-age=60, stale-while-revalidate=60

当客户端在1min(max-age = 60)之后请求资源时,nginx将在执行后台更新请求时返回另一分钟的陈旧响应(state-while-revalidate = 60)。

如果客户端在2分钟后请求资源并且仍然没有更新,它将直接转到原点,从而收到错误。