# CDN加速静态资源配置指南
## 概述
本文档详细说明如何为novalon.cn配置腾讯云CDN加速静态资源,提升网站加载速度和用户体验。
## 前置条件
- 腾讯云账号
- 已备案域名: novalon.cn
- 已部署的Next.js应用
- 腾讯云COS存储桶
## 方案架构
```
用户请求
↓
cdn.novalon.cn (CDN加速域名)
↓
腾讯云CDN节点 (全国边缘节点)
↓
COS存储桶 (源站)
↓
静态资源 (JS/CSS/图片/字体)
```
## 实施步骤
### 步骤1: 创建COS存储桶
1. 登录腾讯云控制台: https://console.cloud.tencent.com
2. 进入对象存储COS服务
3. 创建存储桶:
- 名称: `novalon-cdn-[APPID]` (APPID在账号信息中查看)
- 地域: 成都 (ap-chengdu) - 与服务器同地域
- 访问权限: 公有读、私有写
- 版本控制: 不启用
4. 记录存储桶信息:
- 存储桶名称: `novalon-cdn-[APPID]`
- 地域: `ap-chengdu`
- 访问域名: `novalon-cdn-[APPID].cos.ap-chengdu.myqcloud.com`
### 步骤2: 配置CDN加速域名
1. 进入CDN控制台: https://console.cloud.tencent.com/cdn
2. 点击"域名管理" > "添加域名"
3. 配置域名信息:
- 加速域名: `cdn.novalon.cn`
- 业务类型: CDN网页小文件
- 加速区域: 中国大陆
- 源站类型: COS源
- 源站地址: `novalon-cdn-[APPID].cos.ap-chengdu.myqcloud.com`
- 回源协议: HTTPS
- 回源Host: `novalon-cdn-[APPID].cos.ap-chengdu.myqcloud.com`
4. 点击"提交",等待审核通过
### 步骤3: 配置DNS解析
1. 进入DNS解析控制台 (新网)
2. 为`cdn.novalon.cn`添加CNAME记录:
- 记录类型: CNAME
- 主机记录: cdn
- 记录值: `cdn.novalon.cn.cdn.dnsv1.com` (腾讯云CDN提供的CNAME地址)
- TTL: 600
3. 验证DNS解析:
```bash
nslookup cdn.novalon.cn
```
### 步骤4: 配置HTTPS证书
1. 在CDN域名管理页面,点击域名名称进入详情页
2. 选择"高级配置" > "HTTPS配置"
3. 上传SSL证书:
- 证书来源: 自有证书
- 证书内容: 复制`novalon.cn`的SSL证书
- 私钥内容: 复制私钥
4. 开启HTTP2.0
5. 开启强制跳转HTTPS
### 步骤5: 配置缓存规则
在CDN域名详情页 > "缓存配置" > "节点缓存过期配置":
1. 添加缓存规则:
- 类型: 目录
- 内容: `/_next/static/`
- 过期时间: 365天
- 权重: 90
2. 添加文件类型规则:
- 类型: 文件后缀
- 内容: `js;css;jpg;jpeg;png;gif;webp;avif;svg;woff;woff2;ttf;eot`
- 过期时间: 365天
- 权重: 80
3. 配置不缓存规则:
- 类型: 目录
- 内容: `/api/`
- 过期时间: 不缓存
- 权重: 100
### 步骤6: 配置访问控制
1. 防盗链配置:
- 类型: 白名单
- 名单: `novalon.cn;*.novalon.cn`
- 是否包含空Referer: 是
2. IP访问限频:
- 单IP访问频率限制: 开启
- 限制频率: 100次/秒
### 步骤7: 上传静态资源到COS
#### 方法1: 使用部署脚本 (推荐)
1. 安装依赖:
```bash
pip install coscmd
```
2. 配置环境变量:
```bash
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"
```
3. 运行部署脚本:
```bash
chmod +x scripts/deploy-cdn.sh
./scripts/deploy-cdn.sh
```
#### 方法2: 手动上传
1. 使用COS控制台上传:
- 进入存储桶
- 创建目录: `_next/static/`
- 上传`dist/static/`目录下的所有文件
2. 设置对象元数据:
- Cache-Control: `public, max-age=31536000, immutable`
### 步骤8: 更新应用配置
1. 更新环境变量:
```bash
# 在.env文件中添加
CDN_DOMAIN=https://cdn.novalon.cn
```
2. 重新构建并部署应用:
```bash
npm run build
docker buildx build --platform linux/amd64 -t novalon-website:1.0.1 --load .
# 部署到服务器...
```
### 步骤9: 验证CDN加速效果
1. 检查静态资源URL:
```bash
curl -I https://cdn.novalon.cn/_next/static/chunks/main.js
```
2. 检查响应头:
```
HTTP/2 200
server: tencent-cdn
x-cache-lookup: Cache Hit
age: 3600
cache-control: public, max-age=31536000, immutable
```
3. 使用浏览器开发者工具:
- Network面板查看资源加载时间
- 确认资源来自CDN节点
## 性能优化建议
### 1. 图片优化
使用Next.js Image组件自动优化图片:
```tsx
import Image from 'next/image'