proxy_cache_lock_age
`proxy_cache_lock_age` 指令设置请求在等待缓存锁释放的最长时间,超过该时间将返回 504 响应。 — NGINX HTTP Core
proxy_cache_lock_age
httpserverlocation
语法proxy_cache_lock_age time;
默认值none
上下文http, server, location
模块NGINX HTTP Core
参数1
说明
`proxy_cache_lock_age` 指令配置请求在等待由另一个正在处理的请求生成的缓存响应时会等待的时长。这有助于减少对同一资源的并发请求数量,只允许一个请求填充缓存,而其他请求要么等待该响应,要么在缓存可用后立即获取缓存响应。 当一个请求未命中缓存,而另一个针对相同内容的请求正在处理时,后来的请求将等待前一请求完成,最长等待时间由 `proxy_cache_lock_age` 定义。如果前一个请求在此时间内完成,等待的请求将获取缓存响应。如果在指定时间内锁未释放,等待的请求将返回 504 Gateway Timeout 错误。通过适当调整此指令,可以在避免对同时命中缓存的高并发请求造成不必要服务器负载的同时,优化用户的响应时间。 要配置 `proxy_cache_lock_age`,只需在 http、server 或 location 上下文中定义该指令,并指定所需的时间长度。平衡该值与预期负载和响应时间非常重要,以避免潜在的性能问题。
配置示例
location /api {
proxy_pass http://backend;
proxy_cache my_cache;
proxy_cache_lock on;
proxy_cache_lock_age 5s;
}⚠
将 age 设置得过低可能会导致频繁超时,因为并发请求可能无法足够快地完成。
⚠
如果不启用 `proxy_cache_lock`,则此指令将不起作用,因为缓存锁定机制未启用。