CDN 缓存优化
约 418 字大约 1 分钟
2024-08-14
CDN 缓存原理
CDN(Content Delivery Network)通过在全球部署边缘节点,将资源缓存到离用户最近的服务器,减少访问延迟。
CDN 缓存策略
- 边缘缓存:资源缓存在 CDN 边缘节点
- 源站回源:缓存未命中时回源获取资源
- 缓存刷新:手动或自动刷新缓存
缓存 Header 配置
| Header | 说明 |
|---|---|
Cache-Control | 控制缓存行为 |
Expires | 缓存过期时间 |
Last-Modified | 资源最后修改时间 |
ETag | 资源唯一标识 |
CDN 优化策略
1. 缓存时间设置
# Nginx 配置示例
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
expires 1y;
add_header Cache-Control "public, no-transform";
}2. 动静分离
- 静态资源:部署到 CDN,设置长缓存
- 动态资源:使用
Cache-Control: no-cache或短缓存
3. 缓存分级
浏览器缓存 → CDN 边缘节点 → CDN 源站 → 回源服务器4. 离线缓存(SDK)
对于客户端 SDK 或工具库,可以使用版本化的 URL 实现「无限缓存」:
<script src="https://cdn.example.com/sdk/v1.2.3/app.js"></script>更新版本号即可让用户获取最新资源,同时旧版本仍可命中缓存。
CDN 最佳实践
- 合理设置缓存时间:静态资源 1 年,动态资源根据业务需求
- 使用版本化 URL:便于缓存失效和控制
- 开启 Gzip/Brotli 压缩:减少传输体积
- 配置 CORS 头:允许跨域访问
- 使用 HTTP/2:多路复用提升性能
- 预热机制:新版本发布前预热 CDN 缓存
参考文章:
