缓存路径与缓存键
fastcgi_cache_path /var/cache/nginx levels=1:2
keys_zone=APP:100m inactive=60m max_size=1g;
fastcgi_cache_key "$scheme$request_method$host$request_uri";缓存键必须覆盖会改变响应内容的关键维度,但不要随意加入 User-Agent,否则会造成缓存碎片。
必须绕过的请求
- 非 GET/HEAD 请求。
- 后台、登录、结算等个性化路径。
- 带登录态或购物车 Cookie 的请求。
- 需要实时响应的 API。
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-FastCGI-Cache $upstream_cache_status always;验证命中
清空缓存后连续请求同一 URL。第一次应为 MISS,后续请求应为 HIT。同时确认登录用户和后台请求始终绕过缓存。
curl -I https://example.com/
curl -I https://example.com/
# X-FastCGI-Cache: MISS -> HIT失效与陈旧缓存
发布内容时应精准清除首页、文章页和相关归档。对短暂的上游故障,可配置 use_stale 提高可用性,但需要配合监控,避免长期掩盖故障。
缓存不是数据库一致性的替代品。任何涉及权限、价格和用户数据的响应,都应默认不缓存。