fastcgi_cache_bypass 是请求级绕过缓存的开关,不清理缓存;适用于登录用户、调试预览、后台路径、后端主动触发等场景,通过 Cookie、参数、请求头或路径匹配实现精准绕行。

fastcgi_cache_bypass 不是清缓存的工具,而是让某次请求“不查缓存、直连后端”的开关。它只影响当前请求,不删旧缓存、不改其他请求行为,适合做精准绕行。
登录用户或带状态的请求必须绕过缓存
已登录用户的页面内容(如个人中心、购物车)依赖 Cookie 或 Session,缓存会返回他人数据。常见做法是检测登录标识:
- 用
$cookie_logged_in或$cookie_wordpress_logged_in判断是否已登录 - 匹配 PHPSESSID:只要携带会话 Cookie 就绕过,
fastcgi_cache_bypass $cookie_PHPSESSID; - 组合多个条件:
fastcgi_cache_bypass $cookie_nocache $arg_preview $http_authorization;,任一非空即生效
调试和预览场景需要临时跳过缓存
开发或内容预览时,希望看到最新输出而非缓存结果,最轻量的方式是加参数控制:
- 访问
/post/123?preview=1,Nginx 配置fastcgi_cache_bypass $arg_preview; - 配合
fastcgi_no_cache使用,避免响应被意外写入缓存 - 浏览器开发者工具中发送
Pragma: no-cache请求头,也可用$http_pragma触发 bypass
后台管理与实时数据页默认不缓存
WordPress 后台、仪表盘、订单状态页等,内容每秒变化,缓存毫无意义且危险:
- 对路径做正则匹配:
if ($request_uri ~* "^/(wp-admin|dashboard|api/order)") { set $skip_cache 1; } - 再通过
fastcgi_cache_bypass $skip_cache;生效 - 注意不要误配成
/post/123这类内容页——它们应允许缓存,靠 purge 清理,而非 bypass
后端程序可主动触发绕过逻辑
PHP 程序可在响应前设置特定信号,让 Nginx 捕获并执行 bypass:
- PHP 中输出:
setcookie('nocache', '1', 0, '/'); - Nginx 中捕获:
fastcgi_cache_bypass $cookie_nocache; - 或读取响应头:
fastcgi_cache_bypass $upstream_http_x_nocache;(需搭配fastcgi_ignore_headers Cache-Control)


















