将proxy_cache_background_update on
与proxy_cache_use_stale updating
结合使用时,如果原始服务器返回错误,客户端将继续收到陈旧内容。
当后台更新从源服务器收到错误时,是否可以清除缓存项?
我的目标是缩短响应时间,我不想在原始服务器关闭时继续提供过时的内容。仅在更新缓存时。
答案 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分钟后请求资源并且仍然没有更新,它将直接转到原点,从而收到错误。