Nginx是大型架构的核心,下面我重点详解Nginx缓存性能@mikechen
Nginx缓存
Nginx作为高性能的反向代理与负载均衡软件,其缓存机制是提升后端服务吞吐与响应速度的关键手段。

Nginx 缓存的核心思路很简单:把“重复计算、重复回源”的请求尽量挡在 Nginx 这一层。
让请求直接命中缓存,从而显著降低后端压力并提升响应速度。
其缓存机制(主要指 proxy_cache 和 fastcgi_cache)是实现“性能提升 10 倍”的核心利器。
它能将上游服务器(后端 API、应用服务器、PHP-FPM 等)的响应结果,直接缓存在 Nginx 本地磁盘 + 共享内存中。
后续相同请求直接从缓存返回,几乎零延迟、无需再请求后端,从而大幅降低后端负载、缩短响应时间。
Nginx缓存原理
Nginx缓存,基于代理缓存(proxy_cache)与相关指令工作。
核心流程如下:

请求 → 计算Key → 查缓存
↓
命中 → 返回
↓
未命中 → 请求后端 → 写入缓存 → 返回
请求到达Nginx,按配置生成缓存键(通常包含主机、URI、参数和相关头)。
Nginx查询缓存区(内存索引指向磁盘文件)。
若命中且未过期,直接返回缓存响应,包括状态码、头与主体。
若未命中或缓存已过期,Nginx将请求转发至上游服务器,接收完整响应后按缓存策略写入缓存并返回给客户端。
缓存生命周期受Expires/Cache-Control、proxy_cache_valid等指令控制。
Nginx缓存性能提升10倍
要真正实现10倍性能提升,核心在于高命中率 + 极致优化。
命中率决定一切(目标 80%+):精心设计 proxy_cache_key。
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend; # 上游
# 启用缓存
proxy_cache mycache;
proxy_cache_key $cache_key; # 自定义键
proxy_cache_valid 200 302 10m; # 200/302 状态码缓存 10 分钟
proxy_cache_valid 404 1m; # 404 缓存 1 分钟
proxy_cache_valid any 5m; # 其他状态码 5 分钟
# 控制不缓存的场景
proxy_no_cache $http_pragma $http_authorization $arg_nocache; # 带这些参数不缓存
proxy_cache_bypass $http_pragma $http_authorization $arg_nocache;
# 调试头(强烈推荐)
add_header X-Cache-Status $upstream_cache_status; # HIT / MISS / EXPIRED / BYPASS
add_header X-Cache-Key $cache_key;
# 客户端强制缓存
expires 1d;
}
}
proxy_cache_path:定义缓存路径、大小、键存储方式与淘汰算法(inactive、max_size)。
proxy_cache_key:控制缓存粒度参数。
proxy_cache_valid:设置不同状态码的缓存有效期。
合理设置缓存有效期:proxy_cache_valid 200 302 10m;(不同状态码不同时长)。
静态资源可设1年,动态API 10秒~10分钟。
动静分离 + 分层缓存:静态资源长缓存,动态内容短缓存 + CDN多级缓存。