scgi_cache_bypass

`scgi_cache_bypass` 指令控制何时根据指定条件绕过 SCGI 缓存。 — NGINX HTTP Core

scgi_cache_bypass
httpserverlocation
语法scgi_cache_bypass condition;
默认值none
上下文http, server, location
模块NGINX HTTP Core
参数1+

说明

`scgi_cache_bypass` 指令用于定义在何种条件下应为特定请求绕过 SCGI 缓存。它接受一个或多个参数,这些参数可以使用变量(例如请求头或服务器变量)来确定是否应忽略缓存。当条件计算为非空值时,响应不会从缓存中提供,而是向 upstream 服务器发送新的请求。这样对于不应缓存的动态内容尤其有用,可确保用户获取最新数据。 该指令在 `http`、`server` 或 `location` 上下文中生效,允许根据应用需求对缓存行为进行细粒度控制。例如,如果你希望对包含特定 cookie 或请求头的请求绕过缓存,则可以使用此指令来指定该条件。在数据频繁变化或与用户相关的场景中,绕过缓存也可以提高性能,避免提供过期内容。 用户应谨慎使用该指令,因为过度绕过缓存可能导致 upstream 服务器负载增加并可能造成性能下降。这需要在缓存与实时访问需求之间进行谨慎的权衡。

配置示例

location /api {
    scgi_pass backend;
    scgi_cache my_cache;
    scgi_cache_bypass $http_cache_bypass;
}

在没有适当条件的情况下使用此指令可能导致意外的缓存行为。

如果绕过条件始终为真,就会完全抵消缓存的好处。

请务必在类似生产环境中测试这些条件,以避免性能问题。