最佳实践
CDN加速配置完全指南
详细介绍如何配置CDN加速,包括阿里云CDN、腾讯云CDN和Cloudflare的配置步骤。
igwen6w
什么是CDN
CDN(Content Delivery Network,内容分发网络)是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容。
为什么需要CDN
主要优势
- 加速访问 - 用户就近访问,减少延迟
- 降低负载 - 减轻源服务器压力
- 提升体验 - 更快的加载速度,更好的用户体验
- 节省成本 - 减少带宽成本
- 提高可靠性 - 分布式架构,提高可用性
适用场景
- 网站加速
- 下载分发
- 视频点播
- 直播流媒体
- API加速
主流CDN服务对比
| 特性 | 阿里云CDN | 腾讯云CDN | Cloudflare |
|---|---|---|---|
| 节点数量 | 2800+ | 2800+ | 300+ |
| 国内节点 | ✅ | ✅ | ❌ |
| 免费额度 | ❌ | ❌ | ✅ |
| 价格 | 按流量/带宽 | 按流量/带宽 | 免费版/付费版 |
| HTTPS | ✅ | ✅ | ✅ |
阿里云CDN配置
1. 添加域名
登录阿里云CDN控制台:
- 点击”添加域名”
- 输入加速域名(如:cdn.example.com)
- 选择业务类型(图片小文件、大文件下载、音视频点播等)
- 输入源站信息
2. 配置源站
源站类型:
- IP源站 - 直接输入源站IP地址
- 域名源站 - 输入源站域名
- OSS源站 - 选择OSS Bucket
// 配置示例
{
"domain": "cdn.example.com",
"type": "web",
"sources": [
{
"type": "domain",
"content": "www.example.com",
"port": 80,
"priority": 20,
"weight": 10
}
]
}
3. 配置缓存策略
// 缓存配置示例
{
"directory": "/",
"ttl": 3600, // 1小时
"weight": 1
}
// 针对不同路径设置不同缓存时间
{
"directory": "/static/images/",
"ttl": 86400, // 24小时
"weight": 1
}
{
"directory": "/api/",
"ttl": 0, // 不缓存
"weight": 1
}
4. 配置HTTPS
- 上传证书或使用免费证书
- 开启HTTP2.0
- 配置强制HTTPS跳转
腾讯云CDN配置
基本配置
与阿里云CDN类似,步骤如下:
- 添加加速域名
- 配置源站信息
- 配置缓存规则
- 开启HTTPS
高级配置
访问控制:
// Referer防盗链
{
"referer": {
"enabled": true,
"type": "white_list",
"list": ["example.com", "*.example.com"]
}
}
// IP黑白名单
{
"ipFilter": {
"enabled": true,
"type": "white_list",
"list": ["1.2.3.4", "5.6.7.8"]
}
}
URL鉴权:
// 鉴权配置
{
"auth": {
"type": "type_a",
"key": "your_key",
"expire_time": 1800
}
}
Cloudflare配置
1. 添加站点
- 注册Cloudflare账号
- 添加你的网站
- 选择免费套餐
2. 修改DNS
将域名DNS服务器修改为Cloudflare提供的DNS服务器:
ns1.cloudflare.com
ns2.cloudflare.com
3. 配置缓存
页面规则:
*example.com/images/*
- 缓存级别:标准
- 边缘缓存过期时间:1天
*example.com/api/*
- 缓存级别:绕过
- 禁用缓存
4. 优化设置
Speed优化:
- Auto Minify - 自动压缩CSS/JS
- Brotli压缩
- HTTP/2
- HTTP/3 (QUIC)
性能优化建议
1. 缓存策略
静态资源:
- 图片、CSS、JS:长缓存(1年)
- HTML文件:短缓存或不缓存
- API响应:不缓存
缓存配置示例:
# Nginx缓存头配置
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
location ~* \.(html)$ {
expires 1h;
add_header Cache-Control "public";
}
2. 文件优化
图片优化:
- 使用WebP格式
- 响应式图片
- 懒加载
- 图片压缩
CSS/JS优化:
- 压缩代码
- 合并文件
- 按需加载
- 异步加载
3. 预加载
<!-- DNS预解析 -->
<link rel="dns-prefetch" href="https://cdn.example.com">
<!-- 预连接 -->
<link rel="preconnect" href="https://cdn.example.com">
<!-- 预加载关键资源 -->
<link rel="preload" href="/styles/main.css" as="style">
<link rel="preload" href="/scripts/main.js" as="script">
监控和分析
1. 流量监控
关注指标:
- 命中率
- 流量统计
- 请求次数
- 带宽峰值
2. 性能监控
关键指标:
- 回源率
- 响应时间
- 错误率
- 状态码分布
3. 日志分析
# 分析访问日志
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10
# 统计状态码
awk '{print $9}' access.log | sort | uniq -c | sort -rn
成本优化
1. 选择合适的计费方式
按流量计费:
- 适合流量波动大的场景
- 日常访问量不稳定
按带宽计费:
- 适合流量稳定的场景
- 带宽峰值固定
2. 优化流量使用
- 提高缓存命中率
- 使用预取加载
- 压缩传输内容
- 使用WebP等高效格式
故障排查
常见问题
1. 缓存未更新
- 清除缓存
- 刷新预热
- 检查缓存规则
2. 跨域问题
- 配置CORS头
- 检查源站配置
3. HTTPS证书
- 更新证书
- 检查证书链
- 配置正确的SSL模式
调试工具
# 检查CDN节点
dig cdn.example.com
# 查看响应头
curl -I https://cdn.example.com/file.js
# 检查缓存
curl -H "Pragma: no-cache" https://cdn.example.com/file.js
最佳实践总结
- 合理配置缓存 - 静态资源长缓存,动态内容不缓存
- 启用HTTPS - 提高安全性,启用HTTP/2
- 监控性能 - 定期查看监控数据,优化配置
- 成本控制 - 选择合适的计费方式,优化流量使用
- 多级缓存 - 浏览器缓存 + CDN缓存 + 源站缓存
相关阅读: