fastcgi_cache_revalidate

The 'fastcgi_cache_revalidate' 指令控制 NGINX 是否会重新验证缓存的 FastCGI 响应。 — NGINX HTTP Core

fastcgi_cache_revalidate
httpserverlocation
语法fastcgi_cache_revalidate on | off;
默认值off
上下文http, server, location
模块NGINX HTTP Core
参数flag

说明

'fastcgi_cache_revalidate' 指令在 NGINX 中允许对来自 FastCGI 后端的缓存响应的重新验证进行更细粒度的控制。当该指令设置为 'on' 时,NGINX 将基于缓存内容使用 'If-Modified-Since' 或 'If-None-Match' 头发出有条件请求。这样可以确保当后端内容发生变化时,会相应地将更新后的响应返回给客户端。该行为有助于在减少不必要的后端请求的同时保持缓存内容的新鲜度,从而在动态内容不经常变化的环境中提升性能。 相比之下,当设置为 'off' 时,NGINX 将在不查询后端更新的情况下提供缓存响应,这可能导致在底层数据发生变化时提供过时的内容。该指令在处理更新频率不可预测的内容时特别有用,因为它在提供缓存内容与确保用户接收最新响应版本之间取得了平衡,同时不丧失缓存带来的效率优势。

配置示例

http {
    fastcgi_cache_path /var/cache/nginx/fastcgi_tmp levels=1:2 keys_zone=my_cache:10m;

    server {
        location /fastcgi {
            include fastcgi_params;
            fastcgi_pass backend;
            fastcgi_cache my_cache;
            fastcgi_cache_revalidate on;
        }
    }
}

确保您的后端 FastCGI 应用支持条件 GET 请求,以使该指令生效。

在内容变化非常频繁的情况下使用该指令可能导致过多的后端请求,抵消缓存带来的好处。