9.9 KiB
9.9 KiB
Nginx缓存配置说明
📝 配置概述
更新时间: 2025-12-23
服务器: 公网服务器 156.225.27.52:50232
配置文件: /www/server/panel/vhost/nginx/qd.yydd.ai.conf
状态: ✅ 已禁用所有缓存(开发模式)
🚫 当前缓存设置
已禁用的缓存功能
location / {
# 反向代理配置
proxy_pass http://127.0.0.1:5246;
# 🚫 禁用缓存 - 开发模式
proxy_buffering off; # 禁用代理缓冲
proxy_cache off; # 禁用代理缓存
proxy_no_cache 1; # 不缓存响应
proxy_cache_bypass 1; # 绕过缓存检查
# 添加缓存控制头
add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
add_header Pragma "no-cache";
add_header Expires "0";
}
📊 缓存控制说明
Nginx层面缓存控制
| 指令 | 作用 | 值 |
|---|---|---|
proxy_buffering |
代理缓冲 | off(禁用) |
proxy_cache |
代理缓存 | off(禁用) |
proxy_no_cache |
不缓存响应 | 1(启用) |
proxy_cache_bypass |
绕过缓存 | 1(启用) |
HTTP响应头
| 响应头 | 作用 | 值 |
|---|---|---|
Cache-Control |
缓存策略 | no-store, no-cache, must-revalidate |
Pragma |
HTTP/1.0兼容 | no-cache |
Expires |
过期时间 | 0(立即过期) |
🎯 效果说明
对开发的好处
-
✅ 实时更新
- 前端代码更新立即生效
- 无需手动清除浏览器缓存
- API响应不会被缓存
-
✅ 调试便利
- 每次请求都是最新内容
- 便于测试新功能
- 避免缓存导致的问题
-
✅ 快速迭代
- 修改代码后立即看到效果
- 减少"看不到更新"的困惑
- 提高开发效率
🔄 切换到生产模式
当系统正式上线后
建议:启用缓存以提高性能和减少服务器负载
location / {
proxy_pass http://127.0.0.1:5246;
# 启用缓存(生产模式)
proxy_buffering on;
# 静态资源缓存(仅示例,根据实际调整)
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
proxy_pass http://127.0.0.1:5246;
proxy_cache my_cache;
proxy_cache_valid 200 30d;
proxy_cache_valid 404 1m;
add_header Cache-Control "public, max-age=2592000";
}
# API响应不缓存
location /api/ {
proxy_pass http://127.0.0.1:5246;
proxy_buffering off;
add_header Cache-Control "no-cache, no-store, must-revalidate";
}
}
📝 切换步骤
从开发模式切换到生产模式
# 1. SSH登录公网服务器
ssh -p 50232 root@156.225.27.52
# 2. 编辑Nginx配置
vi /www/server/panel/vhost/nginx/qd.yydd.ai.conf
# 3. 修改缓存配置(根据需要)
# 移除或注释 proxy_buffering off 等指令
# 添加适当的缓存配置
# 4. 测试配置
nginx -t
# 5. 重载Nginx
nginx -s reload
🧪 测试缓存配置
验证缓存已禁用
# 方式1:查看HTTP响应头
curl -I https://qd.yydd.ai
# 应该看到:
# Cache-Control: no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0
# Pragma: no-cache
# Expires: 0
# 方式2:在浏览器开发者工具中
# Network → Headers → Response Headers
# 检查 Cache-Control 等头部
测试更新是否实时
-
前端更新测试
# 修改前端代码 cd /Users/lanmu/Desktop/qiangdanxitong/frontend # 编辑任意文件 # 构建并上传 pnpm build scp -P 5204 -r dist/* root@156.225.27.52:/opt/designhub/frontend/ # 立即刷新浏览器(Ctrl+R,无需Ctrl+Shift+R强制刷新) # 应该看到更新 -
API更新测试
# 修改后端代码 # 重启后端服务 ssh -p 5204 root@156.225.27.52 systemctl restart designhub-backend # 立即在浏览器中调用API # 应该返回最新结果
⚠️ 注意事项
开发模式的影响
优点:
- ✅ 开发调试方便
- ✅ 代码更新实时生效
- ✅ 避免缓存问题
缺点:
- ⚠️ 服务器负载略高(每次请求都处理)
- ⚠️ 用户体验略差(无缓存加速)
- ⚠️ 带宽消耗略大
建议:
- 开发阶段:使用当前配置(无缓存)
- 生产阶段:启用适当缓存(性能优化)
🎯 完整配置文件
当前配置(开发模式)
# /www/server/panel/vhost/nginx/qd.yydd.ai.conf
# HTTP自动跳转HTTPS
server {
listen 80;
server_name qd.yydd.ai;
location /.well-known/acme-challenge/ {
root /www/wwwroot/qd.yydd.ai;
}
location / {
return 301 https://$server_name$request_uri;
}
}
# HTTPS配置
server {
listen 443 ssl http2;
server_name qd.yydd.ai;
# SSL证书
ssl_certificate /etc/letsencrypt/live/qd.yydd.ai/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/qd.yydd.ai/privkey.pem;
# SSL优化
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
client_max_body_size 100M;
# 反向代理 - 无缓存模式
location / {
proxy_pass http://127.0.0.1:5246;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 超时设置
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
# 🚫 禁用缓存 - 开发模式
proxy_buffering off;
proxy_cache off;
proxy_no_cache 1;
proxy_cache_bypass 1;
# 添加缓存控制头
add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
add_header Pragma "no-cache";
add_header Expires "0";
}
access_log /www/wwwlogs/qd.yydd.ai.https.access.log;
error_log /www/wwwlogs/qd.yydd.ai.https.error.log;
}
🔧 常用命令
修改配置后重载
# SSH登录
ssh -p 50232 root@156.225.27.52
# 编辑配置
vi /www/server/panel/vhost/nginx/qd.yydd.ai.conf
# 测试配置
nginx -t
# 重载Nginx(不中断服务)
nginx -s reload
查看配置
# 查看当前配置
ssh -p 50232 root@156.225.27.52
cat /www/server/panel/vhost/nginx/qd.yydd.ai.conf
验证缓存状态
# 方式1:curl查看响应头
curl -I https://qd.yydd.ai
# 方式2:详细查看
curl -v https://qd.yydd.ai 2>&1 | grep -i cache
📊 浏览器缓存说明
浏览器本地缓存
注意: 即使Nginx禁用了缓存,浏览器仍可能有自己的缓存
开发时的刷新方式:
| 刷新方式 | 快捷键 | 效果 |
|---|---|---|
| 普通刷新 | F5 或 Ctrl+R | 可能使用缓存 |
| 硬刷新 | Ctrl+Shift+R | 强制不使用缓存 |
| 清空缓存 | DevTools → Network → Disable cache | 开发时建议勾选 |
建议:
- 开发时打开浏览器开发者工具(F12)
- 勾选 Network → Disable cache
- 这样可以完全禁用浏览器缓存
🚀 性能对比
开发模式 vs 生产模式
| 指标 | 开发模式(无缓存) | 生产模式(有缓存) |
|---|---|---|
| 首次加载 | 正常 | 正常 |
| 重复访问 | 每次都请求服务器 | 使用缓存,快速 |
| 服务器负载 | 较高 | 较低 |
| 带宽消耗 | 较高 | 较低 |
| 开发便利性 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| 用户体验 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
💡 最佳实践
开发阶段(当前)
✅ 已实施:
- Nginx层面禁用所有缓存
- 添加 no-cache 响应头
- 便于快速迭代开发
测试阶段(即将上线)
建议:
- 保持当前配置
- 测试功能完整性
- 验证无缓存相关bug
生产阶段(正式上线后)
建议:
- 启用静态资源缓存(JS/CSS/图片)
- API响应保持不缓存
- 设置合理的缓存时间
- 使用CDN加速
🔄 快速切换配置
配置模板
开发模式配置(当前):
# 完全禁用缓存
proxy_buffering off;
proxy_cache off;
proxy_no_cache 1;
proxy_cache_bypass 1;
add_header Cache-Control "no-store, no-cache, must-revalidate";
生产模式配置(未来):
# 启用适度缓存
proxy_buffering on;
# 静态资源缓存7天
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
add_header Cache-Control "public, max-age=604800";
}
# API不缓存
location /api/ {
add_header Cache-Control "no-cache";
}
📞 技术支持
修改缓存配置
如需修改缓存配置,请:
- SSH登录公网服务器
- 编辑
/www/server/panel/vhost/nginx/qd.yydd.ai.conf - 测试配置:
nginx -t - 重载Nginx:
nginx -s reload
验证配置生效
# 查看HTTP响应头
curl -I https://qd.yydd.ai | grep -i cache
# 应该看到当前设置的缓存策略
📝 更新记录
| 日期 | 操作 | 说明 |
|---|---|---|
| 2025-12-23 | 禁用缓存 | 开发模式,便于测试 |
| 待定 | 启用缓存 | 生产模式,性能优化 |
🎯 总结
✅ 当前状态: 所有缓存已禁用
✅ 适用场景: 开发测试阶段
✅ 效果: 代码更新立即生效
✅ 访问地址: https://qd.yydd.ai
开发体验:
- 修改前端代码 → 构建上传 → 普通刷新(F5)即可看到更新
- 修改后端代码 → 重启服务 → 立即生效
- 无需清除浏览器缓存或强制刷新
🎉 现在可以愉快地开发测试了!
创建时间: 2025-12-23
配置状态: ✅ 已生效
验证方式: 访问 https://qd.yydd.ai 并查看响应头