缓存加速实验

缓存加速实验

一、实验背景:为什么需要 Nginx 缓存?

Nginx 作为反向代理服务器,默认会把所有请求转发到后端业务服务器(比如实验里的 172.25.254.10/20)。如果用户频繁请求相同的 PHP/JS 文件,后端服务器需要重复处理、返回数据,会导致:

  • 后端服务器负载高;
  • 响应时间长,用户体验差;
  • 网络传输开销大。

而 Nginx 的proxy_cache(代理缓存)功能,能把后端返回的响应内容缓存到 Nginx 服务器本地,后续相同请求直接从 Nginx 本地缓存返回,不用再转发给后端,从而大幅提升性能。

步骤 1:未启用缓存的压测(基准测试)

步骤 2:配置 Nginx 缓存

步骤 3:启用缓存后的压测

一、先创建缓存目录

bash 复制代码
mkdir -p /usr/local/nginx/proxy_cache
chown -R nginx:nginx /usr/local/nginx/proxy_cache
chmod -R 755 /usr/local/nginx/proxy_cache

二、Nginx 完整配置

打开配置文件:

bash 复制代码
vim /usr/local/nginx/conf/nginx.conf

直接全选复制下面内容覆盖

bash 复制代码
# 缓存核心配置
    proxy_cache_path /usr/local/nginx/proxy_cache
        levels=1:2
        keys_zone=proxycache:20m
        inactive=120s
        max_size=1g;

三、重启 Nginx

bash 复制代码
nginx -t
nginx -s reload
systemctl restart nginx

四、绑定域名

在RS3中执行

bash 复制代码
echo "172.25.254.100 lee.timinglee.org" >> /etc/hosts

五、最终压测命令

在RS3中执行

bash 复制代码
ab -n 10000 -c 50 -H "Host: lee.timinglee.org" http://172.25.254.100/index.php

六、查看缓存文件

bash 复制代码
ls /usr/local/nginx/proxy_cache/
tree /usr/local/nginx/proxy_cache/

二、核心知识点拓展(必懂)

  1. Nginx proxy_cache 核心概念
  • 缓存命中 / 未命中:
    1.1未命中(Miss):第一次请求 /index.php,Nginx 转发到后端,拿到响应后同时存入缓存,这个过程叫 "缓存未命中";
    1.2.命中(Hit):第二次及以后请求 /index.php,Nginx 直接从本地缓存返回数据,不用找后端,这个过程叫 "缓存命中"(实验中 9999 次请求都是命中,所以性能飙升)。
  • 缓存 key:proxy_cache_key
    request_uri 是核心,决定 "什么算同一个资源"。比如request_uri代表请求路径(/index.php),如果换成hostrequest_uri,会区分不同域名的同一路径(适合多域名代理场景)。
    缓存有效期:proxy_cache_valid 按状态码设置有效期,因为 200(成功)的响应稳定,可缓存久一点;404(不存在)可能临时变化,缓存短一点。
  1. ab 压测工具基础
    适用场景:快速验证 Web 服务的并发能力,适合初学者;
    注意事项:
    压测机和被测机尽量在同一局域网,避免网络带宽成为瓶颈;
    并发数(-c)不要一次性设太大,逐步增加(比如从 10→50→100),防止直接打挂服务器;
    核心看 QPS、失败请求数、响应时间三个指标。
  2. 反向代理 vs 缓存代理
    反向代理(proxy_pass):Nginx 作为 "中间人",把客户端请求转发给后端服务器,再把后端响应返回给客户端(无缓存时,每一次请求都走这个流程);
    缓存代理:在反向代理基础上,把后端的响应缓存到 Nginx 本地,后续相同请求直接返回缓存,减少后端请求量。
相关推荐
ofoxcoding7 天前
在AI API聚合平台配置DeepSeek V3.2提示词缓存实战:快速接入与成本优化指南
人工智能·spring·缓存·ai
NeilYuen7 天前
gRPC结合FAISS构建AI助手语义缓存模块(一):设计
人工智能·缓存·faiss
taocarts_bidfans7 天前
反向海淘跨境缓存架构优化:taocarts Redis分层缓存实战技术
redis·缓存·架构·反向海淘·taocarts
退休倒计时7 天前
【每日一题】LeetCode 146. LRU 缓存 TypeScript
算法·leetcode·缓存·typescript
炘爚7 天前
Linux——Redis
数据库·redis·缓存
小挪号底迪滴7 天前
Redis 和 MySQL 数据不一致怎么办?缓存更新策略实战
redis·mysql·缓存
闪电悠米7 天前
黑马点评-Redis ZSet-实现关注 Feed 流
服务器·网络·数据库·redis·缓存·junit·lua
Saniffer_SH8 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
AC赳赳老秦8 天前
OpenClaw + 飞书多维表格:自动同步数据、生成统计图表、触发自动化任务
java·大数据·python·缓存·自动化·deepseek·openclaw