Nginx缓存原理详解:如何提高10倍性能!

Nginx是大型架构的核心,下面我重点详解Nginx缓存@mikechen

Nginx缓存

在高并发网站中,80% 的请求是重复内容,例如静态图片、CSS、API结果等。

如果每次请求都要回源到后端应用或数据库,性能必然成为瓶颈,Nginx缓存机制正是为此而生。

Nginx缓存原理详解:如何提高10倍性能!-mikechen

用内存与磁盘,换取极致的响应速度。

一句话总结:缓存命中一次,就等于少了一次后端访问。

 

Nginx缓存工作原理

Nginx提供两类核心缓存机制:

Nginx缓存原理详解:如何提高10倍性能!-mikechen

类型 说明 典型场景
代理缓存(Proxy Cache) 缓存反向代理后的HTTP响应 静态接口、API结果
FastCGI缓存(FastCGI Cache) 缓存动态应用输出(如PHP、Python) WordPress、PHP网站
微缓存(Micro Cache) 缓存秒级动态响应 高频接口(如首页、热榜)

Nginx缓存的核心机制主要包含三步:

1. 缓存命中判断

当客户端请求到达 Nginx 时,Nginx 会根据请求的 URL、参数、Header 等信息生成缓存 Key。
如果发现本地磁盘已有对应缓存文件,则命中缓存,直接返回结果。

2. 缓存写入机制

当缓存未命中时,Nginx 会将请求转发到后端服务器,等待响应后:

一边将响应返回给客户端,一边将响应内容写入缓存目录

缓存文件路径是通过哈希算法计算得出,保证分布均匀、快速查找。

 

3. 缓存更新与失效

当文件过期后,Nginx 会,将旧缓存标记为“陈旧”,并发触发一个后台进程重新获取数据。

 

Nginx缓存案例

Nginx缓存原理详解:如何提高10倍性能!-mikechen

案例1:静态资源加速

location /static/ {
root /var/www/html;
expires 7d;
add_header Cache-Control "public";
}

浏览器缓存+Nginx本地缓存结合;

7天内无需重新请求,秒级加载页面;

 

案例2:接口响应缓存

location /api/news/ {
proxy_cache my_cache;
proxy_pass http://news_backend;
proxy_cache_valid 200 5m;
}

热点新闻接口缓存5分钟;

有效减轻后端请求压力;

QPS 提升 3~10 倍;

 

案例3:动态页面缓存(首页/榜单类)

location = /index.html {
proxy_cache my_cache;
proxy_pass http://web_backend;
proxy_cache_valid 200 10s;
}

即便是动态首页,只要 10 秒内更新一次,仍可大幅提升性能。

评论交流
    说说你的看法