网站首页 > 技术文章 正文
关注△mikechen△,十余年BAT架构经验倾囊相授!
Nginx是大型架构的核心,下面我重点详解Nginx缓存实战@mikechen
文章来源:mikechen.cc
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;}}
以上
文章来源:mikechen.cc
猜你喜欢
- 2025-10-19 SpringBoot反复读取Body失效?Wrapper缓存方案一次根治!
- 2025-10-19 今天聊聊 HTTP 缓存控制_http 缓存设置
- 2025-10-19 如何使用 Nginx 缓存提高网站性能 ?
- 2025-10-19 一次HTTP强缓存失效引发的浏览器缓存键深度探索
- 2025-10-19 深入解析 MyBatis 中的缓存机制_mybatis有几层缓存
- 2025-10-19 前端缓存破局:gulp-rev实现静态资源hash化全指南
- 2025-01-12 CDN+OpenResty 实现丝滑访问的登录态缓存站
- 2025-01-12 如何在Spring Boot中通过布隆过滤器防止缓存穿透问题?
- 2025-01-12 HTML5缓存机制浅析:移动端Web加载性能优化
- 2025-01-12 如何在 NGINX 中缓存内容
你 发表评论:
欢迎- 最近发表
-
- Python常用标准库(pickle序列化和JSON序列化)
- Linux json-c使用_linux解析json数据
- 源码推荐(03.04):微信支付的测试,Json数据解析
- 打开JSON文件的六种方法,总有一种适合你
- springmvc项目中接收Android提交json数据
- 一篇文章让你详细了解何为JSON_json到底是什么
- FlinkSQL处理复杂JSON的思路_flinksql解析json数组
- 超级好用的轻量级JSON处理命令jq_json使用教程
- .NET性能系列文章二:Newtonsoft.Json vs System.Text.Json
- 推荐几个开发必备的JSON工具_推荐几个开发必备的json工具
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)