scgi_cache_use_stale

scgi_cache_use_stale 指令指定在特定情况下何时使用过期的 SCGI 缓存数据来响应客户端请求。 — NGINX HTTP Core

scgi_cache_use_stale
httpserverlocation
语法scgi_cache_use_stale error timeout invalid_header updating;
默认值none
上下文http, server, location
模块NGINX HTTP Core
参数1+

说明

'scgi_cache_use_stale' 指令控制 NGINX 在使用来自 SCGI 缓存的过期缓存数据响应请求时的行为。它允许您定义在何种特定情形下将把过期的缓存响应发送给客户端,而不是完全从后端服务器获取新的数据。其语法接受一个或多个参数来指定这些条件,例如 'error'、'timeout'、'invalid_header' 和 'updating'。启用此功能后,即使主数据源暂时不可用或响应缓慢,也能保证请求仍能被满足,从而改善用户体验。 设置后,如果发生所指定的任一条件,NGINX 将返回过期的缓存响应,而不是无限期等待新的响应。这在对可用性要求极高的高并发应用中尤其有用,因为它通过向客户端提供最后已知的有效响应而不是立即返回错误,来缓解延迟问题。该指令的灵活性意味着您可以根据具体的应用需求和对过期信息容忍度,选择在各种情形下允许使用过期数据。

配置示例

location /app {
    scgi_pass backend;
    scgi_cache my_cache;
    scgi_cache_use_stale error timeout;    
}

在未正确配置缓存的情况下使用此指令可能会导致意外结果或错误。

如果后端服务器频繁返回错误,依赖陈旧的缓存可能会向用户提供过时的信息。

无法涵盖所有错误场景;请根据应用的行为定义 `error`、`timeout` 等。