7.2 KiB
7.2 KiB
CDN加速静态资源配置指南
概述
本文档详细说明如何为novalon.cn配置腾讯云CDN加速静态资源,提升网站加载速度和用户体验。
前置条件
- 腾讯云账号
- 已备案域名: novalon.cn
- 已部署的Next.js应用
- 腾讯云COS存储桶
方案架构
用户请求
↓
cdn.novalon.cn (CDN加速域名)
↓
腾讯云CDN节点 (全国边缘节点)
↓
COS存储桶 (源站)
↓
静态资源 (JS/CSS/图片/字体)
实施步骤
步骤1: 创建COS存储桶
-
登录腾讯云控制台: https://console.cloud.tencent.com
-
进入对象存储COS服务
-
创建存储桶:
- 名称:
novalon-cdn-[APPID](APPID在账号信息中查看) - 地域: 成都 (ap-chengdu) - 与服务器同地域
- 访问权限: 公有读、私有写
- 版本控制: 不启用
- 名称:
-
记录存储桶信息:
- 存储桶名称:
novalon-cdn-[APPID] - 地域:
ap-chengdu - 访问域名:
novalon-cdn-[APPID].cos.ap-chengdu.myqcloud.com
- 存储桶名称:
步骤2: 配置CDN加速域名
-
进入CDN控制台: https://console.cloud.tencent.com/cdn
-
点击"域名管理" > "添加域名"
-
配置域名信息:
- 加速域名:
cdn.novalon.cn - 业务类型: CDN网页小文件
- 加速区域: 中国大陆
- 源站类型: COS源
- 源站地址:
novalon-cdn-[APPID].cos.ap-chengdu.myqcloud.com - 回源协议: HTTPS
- 回源Host:
novalon-cdn-[APPID].cos.ap-chengdu.myqcloud.com
- 加速域名:
-
点击"提交",等待审核通过
步骤3: 配置DNS解析
-
进入DNS解析控制台 (新网)
-
为
cdn.novalon.cn添加CNAME记录:- 记录类型: CNAME
- 主机记录: cdn
- 记录值:
cdn.novalon.cn.cdn.dnsv1.com(腾讯云CDN提供的CNAME地址) - TTL: 600
-
验证DNS解析:
nslookup cdn.novalon.cn
步骤4: 配置HTTPS证书
-
在CDN域名管理页面,点击域名名称进入详情页
-
选择"高级配置" > "HTTPS配置"
-
上传SSL证书:
- 证书来源: 自有证书
- 证书内容: 复制
novalon.cn的SSL证书 - 私钥内容: 复制私钥
-
开启HTTP2.0
-
开启强制跳转HTTPS
步骤5: 配置缓存规则
在CDN域名详情页 > "缓存配置" > "节点缓存过期配置":
-
添加缓存规则:
- 类型: 目录
- 内容:
/_next/static/ - 过期时间: 365天
- 权重: 90
-
添加文件类型规则:
- 类型: 文件后缀
- 内容:
js;css;jpg;jpeg;png;gif;webp;avif;svg;woff;woff2;ttf;eot - 过期时间: 365天
- 权重: 80
-
配置不缓存规则:
- 类型: 目录
- 内容:
/api/ - 过期时间: 不缓存
- 权重: 100
步骤6: 配置访问控制
-
防盗链配置:
- 类型: 白名单
- 名单:
novalon.cn;*.novalon.cn - 是否包含空Referer: 是
-
IP访问限频:
- 单IP访问频率限制: 开启
- 限制频率: 100次/秒
步骤7: 上传静态资源到COS
方法1: 使用部署脚本 (推荐)
- 安装依赖:
pip install coscmd
- 配置环境变量:
export COS_SECRET_ID="your-secret-id"
export COS_SECRET_KEY="your-secret-key"
export COS_BUCKET="novalon-cdn-[APPID]"
export COS_REGION="ap-chengdu"
- 运行部署脚本:
chmod +x scripts/deploy-cdn.sh
./scripts/deploy-cdn.sh
方法2: 手动上传
-
使用COS控制台上传:
- 进入存储桶
- 创建目录:
_next/static/ - 上传
dist/static/目录下的所有文件
-
设置对象元数据:
- Cache-Control:
public, max-age=31536000, immutable
- Cache-Control:
步骤8: 更新应用配置
- 更新环境变量:
# 在.env文件中添加
CDN_DOMAIN=https://cdn.novalon.cn
- 重新构建并部署应用:
npm run build
docker buildx build --platform linux/amd64 -t novalon-website:1.0.1 --load .
# 部署到服务器...
步骤9: 验证CDN加速效果
- 检查静态资源URL:
curl -I https://cdn.novalon.cn/_next/static/chunks/main.js
- 检查响应头:
HTTP/2 200
server: tencent-cdn
x-cache-lookup: Cache Hit
age: 3600
cache-control: public, max-age=31536000, immutable
- 使用浏览器开发者工具:
- Network面板查看资源加载时间
- 确认资源来自CDN节点
性能优化建议
1. 图片优化
使用Next.js Image组件自动优化图片:
import Image from 'next/image'
<Image
src="/hero.jpg"
alt="Hero"
width={1920}
height={1080}
priority
/>
2. 字体优化
配置字体CDN:
import { Inter } from 'next/font/google'
const inter = Inter({
subsets: ['latin'],
display: 'swap',
variable: '--font-inter',
})
3. 代码分割
Next.js自动进行代码分割,确保每个页面只加载必要的代码。
4. 预加载关键资源
import Head from 'next/head'
<Head>
<link rel="preload" href="/fonts/inter.woff2" as="font" type="font/woff2" crossOrigin="anonymous" />
</Head>
监控与告警
1. CDN监控指标
在CDN控制台配置监控告警:
- 带宽峰值
- 请求数
- 命中率
- 状态码分布
- 回源带宽
2. 告警规则
- 带宽峰值 > 100Mbps
- 命中率 < 80%
- 4xx/5xx错误率 > 5%
3. 日志分析
开启CDN访问日志,定期分析:
- 热门资源
- 访问地域分布
- 异常访问模式
成本估算
CDN费用 (按流量计费)
- 基础费用: 0.21元/GB (中国大陆)
- HTTPS请求: 0.05元/万次
- 预估月流量: 100GB
- 预估月费用: 21元 + 5元 = 26元
COS费用
- 存储费用: 0.118元/GB/月
- 流量费用: 0.5元/GB (CDN回源)
- 预估存储: 500MB
- 预估月费用: 0.06元 + 50元 = 50.06元
总计
预估月费用: 76元 (实际费用根据访问量动态调整)
常见问题
Q1: CDN缓存未命中怎么办?
原因:
- 首次访问
- 缓存已过期
- 缓存规则配置错误
解决方案:
- 检查缓存规则配置
- 使用CDN刷新功能预热缓存
- 增加缓存过期时间
Q2: 静态资源404错误?
原因:
- 资源未上传到COS
- 路径不匹配
- 权限配置错误
解决方案:
- 检查COS存储桶中是否存在该文件
- 确认文件路径与URL匹配
- 检查存储桶访问权限
Q3: 跨域问题?
原因:
- CDN域名与应用域名不同
- CORS配置缺失
解决方案: 在COS存储桶设置CORS规则:
[
{
"AllowedOrigin": ["https://novalon.cn"],
"AllowedMethod": ["GET", "HEAD"],
"AllowedHeader": ["*"],
"MaxAgeSeconds": 3600
}
]
Q4: 如何回滚?
如果CDN出现问题,可以快速回滚:
- 修改
next.config.ts,移除assetPrefix配置 - 重新构建并部署应用
- 所有静态资源将从源站加载
维护计划
日常维护
- 每周检查CDN命中率
- 每月分析访问日志
- 定期清理无用资源
版本更新
- 更新应用时同步上传新静态资源
- 使用版本化文件名避免缓存冲突
- 更新后刷新CDN缓存
安全加固
- 定期更新SSL证书
- 配置IP黑名单
- 开启CC防护