CDN 缓存:CloudFront 分发策略
本文阐述我们如何使用 CloudFront CDN 缓存内容并提升全球性能。
问题:全球延迟
用户从世界各地访问我们的网站:
-
印度:50ms 延迟
-
美国:200ms 延迟
-
欧洲:250ms 延迟
-
亚洲:150ms 延迟
从印度处理所有流量会导致国际用户页面加载缓慢。
解决方案:CloudFront CDN
CloudFront:AWS 内容分发网络
边缘站点:全球 400+ 个位置
优势:从最近的位置提供内容
缓存内容
静态资源(长 TTL)
内容:图片、CSS、JavaScript、字体
TTL:1 年
路径:/s/*
优势:极少变更,积极缓存
产品页面(中等 TTL)
内容:产品规格、图片
TTL:1 小时
路径:/p/*
优势:平衡内容新鲜度与性能
查询页面(短 TTL)
内容:搜索结果、筛选视图
TTL:5 分钟
路径:/q/*
优势:频繁更新,短期缓存
文章(长 TTL)
内容:技术文档
TTL:24 小时
路径:/a/*
优势:极少变更
不缓存内容
动态内容:
-
搜索结果 (
/q/?q=<query>) -
用户特定内容(购物车、账户)
-
API 端点 (
/api/*)
原因:必须保持新鲜,用户特定
缓存行为
缓存键
CloudFront 使用 URL 作为缓存键:
相同 URL:从缓存提供
不同 URL:新建缓存条目
查询参数:包含在键中(跟踪参数除外)
缓存头
源服务器设置缓存头:
Cache-Control: public, max-age=3600
public:可由 CDN 缓存
max-age:缓存持续时间(秒)
缓存失效
手动:创建失效请求
自动:等待 TTL 过期
成本:每月前 1,000 条路径免费
参见:CACHE_INVALIDATION_RULE.md 了解策略
源站保护
CDN 保护源服务器:
流量吸收:CDN 处理流量峰值
DDoS 缓解:过滤恶意流量
速率限制:防止源站过载
优势:源站保持响应能力
SSL/TLS
证书:AWS Certificate Manager
协议:TLS 1.2+
优势:加密流量,免费证书
压缩
Gzip:对文本内容启用
Brotli:对现代浏览器启用
优势:更快下载,更低带宽
地理限制
无:全球可用
优势:全球覆盖
监控
指标:
-
缓存命中率
-
源站请求数
-
错误率
-
各区域延迟
CloudWatch:AWS 监控服务
成本优化
缓存命中率:越高 = 成本越低
源站请求数:越少 = 成本越低
数据传输:缓存 = 更便宜
优势:CDN 降低基础设施成本
参考资料
AWS 服务
-
CloudFront - AWS CDN 文档
-
Certificate Manager - SSL 证书
相关文章
- 多服务器架构 - 架构中的 CDN
总结
CloudFront CDN 提升全球性能:
缓存内容:
-
✅ 静态资源(1 年 TTL)
-
✅ 产品页面(1 小时 TTL)
-
✅ 查询页面(5 分钟 TTL)
-
✅ 文章(24 小时 TTL)
不缓存:
-
✅ 动态搜索
-
✅ 用户特定内容
-
✅ API 端点
优势:
-
✅ 更低延迟(边缘站点)
-
✅ 源站保护(流量吸收)
-
✅ DDoS 缓解
-
✅ 成本降低(更少源站请求)
功能:
-
✅ SSL/TLS 加密
-
✅ Gzip/Brotli 压缩
-
✅ 全球可用性
此 CDN 策略平衡了性能、内容新鲜度与成本。