本文目录导读:

- 浏览器缓存(前端开发者/普通用户)
- CDN 缓存(如 Cloudflare、阿里云 CDN)
- 反向代理/Nginx 缓存
- Service Worker 缓存(PWA 场景)
- 系统代理工具(如 Fiddler、Charles)
- 编程框架/库(如 Axios、VueUse)
- 关键原则
缓存工具设置网络缓存的方式取决于你使用的具体工具或场景,以下是几种常见场景的设置方法:
浏览器缓存(前端开发者/普通用户)
- HTTP 头设置(开发者):通过服务器响应头控制,常用字段:
Cache-Control: max-age=3600(缓存1小时)Expires: Wed, 21 Oct 2025 07:28:00 GMT(指定过期时间)ETag/Last-Modified(条件请求验证缓存有效性)
- 浏览器 DevTools:F12 → Network → 勾选“Disable cache”(临时禁用)
- 清除缓存:设置 → 隐私与安全 → 清除浏览数据 → 选择“缓存图片和文件”
CDN 缓存(如 Cloudflare、阿里云 CDN)
- 登录 CDN 控制台 → 缓存配置 → 设置“缓存过期时间”:
- 静态文件(图片、CSS、JS)建议缓存 30 天
- 动态 API 建议不缓存或缓存很短时间(如 60 秒)
- 高级规则:通过
Cache-Control头或 CDN 规则引擎精细控制(如忽略参数、遵循源站头)
反向代理/Nginx 缓存
- Nginx 配置示例:
location /static/ { expires 30d; # 设置过期时间30天 add_header Cache-Control "public, immutable"; } location /api/ { proxy_cache my_cache; # 启用缓存 proxy_cache_valid 200 1h; # 成功响应缓存1小时 proxy_cache_key "$scheme$request_method$host$request_uri"; } - 常用指令:
proxy_cache_path(定义缓存路径和大小)proxy_cache_use_stale(源站故障时用旧缓存)
Service Worker 缓存(PWA 场景)
- 使用
Cache API在 Service Worker 中手动控制:self.addEventListener('fetch', (event) => { event.respondWith( caches.match(event.request).then((response) => { return response || fetch(event.request).then((res) => { return caches.open('my_cache').then((cache) => { cache.put(event.request, res.clone()); // 缓存响应的副本 return res; }); }); }) ); }); - 策略选择:Cache First(先读缓存)、Network First(先网络后缓存)
系统代理工具(如 Fiddler、Charles)
- Fiddler:Rules → Performance → Simulate Modem Speeds(模拟缓存)
- Charles:Tools → Rewrite → 添加规则(如修改响应头添加
Cache-Control: max-age=3600) - V2Ray/Clash:在配置中调整
proxy或rule-providers的缓存策略(通常仅影响代理行为,不直接管理 HTTP 缓存)
编程框架/库(如 Axios、VueUse)
- Axios:使用
axios-cache-adapter插件:import { setupCache } from 'axios-cache-adapter'; const cache = setupCache({ maxAge: 15 * 60 * 1000 }); // 15分钟 const api = axios.create({ adapter: cache.adapter }); - VueUse:
useFetch的cache选项:const { data } = useFetch('/api/data', { cache: 'force-cache' });
关键原则
| 缓存类型 | 适合场景 | 设置重点 |
|---|---|---|
| 浏览器缓存 | 静态资源(很少变化) | 超长过期时间 + 版本号更新URL |
| CDN 缓存 | 全局加速 | 按文件类型分规则 |
| API 缓存 | 暂适性(可滞后几秒) | 短过期 + 条件请求验证 |
| Service Worker | 离线优先应用 | 自定义缓存策略 |
| 系统代理 | 调试/测试 | 修改响应头或模拟慢速网络 |
如果目的是解决性能优化,通常建议:
- 对不变化的资源(CSS/JS/图片)设置
Cache-Control: max-age=31536000, immutable - 对 API 使用
ETag或Last-Modified实现“最多请求一次” - 利用 CDN 的边缘缓存减轻源站压力
如果需要更具体的配置示例(如具体工具、编程语言或服务器类型),请补充细节,我可以提供针对性代码。
标签: 网络缓存设置
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。