Nginx缓存实战:如何让性能飙升10倍!
|
admin
2025年11月13日 9:15
本文热度 130
|
Nginx缓存
Nginx 作为高性能的反向代理、与负载均衡服务器,其”缓存功能“在提升 Web 服务响应速度和减轻后端压力方面具有重要作用。
可以,极大的降低后端压力。
比如:大量重复请求(首页、热榜、图片、热门 API),不再回源,节省 CPU、内存。
提升并发能力:当大多数请求命中缓存时,系统能承受更高峰值流量。
Nginx缓存工作机制
Nginx缓存工作原理,如下:
整体流程;
当客户端发起请求时,Nginx 首先检查本地缓存(通常为磁盘或内存);
若命中缓存(cache hit),直接返回缓存内容;
若未命中(cache miss),Nginx 将请求转发至后端服务器,获取响应后将其写入缓存并返回给客户端。
缓存控制
缓存的有效性由响应头(如 Cache-Control、Expires、ETag、Last-Modified)。
以及,和 Nginx 配置(如 proxy_cache_valid、proxy_cache_key)共同决定。
Nginx 可通过配置缓存键、缓存时间和缓存条件来精细控制缓存策略。
Nginx缓存配置
Nginx 支持多种缓存方式,按场景选择组合使用。
1. 静态资源缓存(浏览器 + Nginx)
适合图片、JS、CSS 等:
- location /static/{
- root /var/www/html;
- expires 30d;
- add_header Cache-Control"public, max-age=2592000";
- }
2.反向代理缓存
适合 API、页面、动静结合场景:
配置:
- proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:200m max_size=30g inactive=60m use_temp_path=off;
-
- server {
- location /api/hot/{
- proxy_pass http://backend_pool;
- proxy_cache my_cache;
- proxy_cache_key "$scheme$host$request_uri";
- proxy_cache_valid 20030210m;
- proxy_cache_valid 4041m;
- proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
- proxy_cache_lock on;
- proxy_cache_lock_timeout 5s;
- add_header X-Cache-Status $upstream_cache_status;
- }
- }
3.秒级缓存
高频但短时容忍一致性损失的接口(热榜、首页):
- location /api/top/{
- proxy_cache my_cache;
- proxy_cache_valid 2001s;
- proxy_cache_use_stale updating;
- }
4.FastCGI Cache
适合 PHP、WordPress 等:
- fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=fcg_cache:100m inactive=60m;
- server {
- location ~ \.php$ {
- fastcgi_pass unix:/run/php-fpm.sock;
- fastcgi_cache fcg_cache;
- fastcgi_cache_key "$scheme$request_method$host$request_uri $cookie_user";
- fastcgi_cache_valid 20030210m;
- add_header X-Fastcgi-Cache $upstream_cache_status;
- }
- }
该文章在 2025/11/14 11:10:37 编辑过