腾讯云CDN对接使用全攻略:从开通到生产级配置
1. CDN 的基本原理与适用场景
内容分发网络(Content Delivery Network,CDN)的核心思路是将源站上的静态资源缓存到分布在全国或全球各地的边缘节点上。当用户发起访问请求时,CDN 会根据用户的地理位置将请求调度到最近的边缘节点。如果该节点已经缓存了目标资源,则直接返回给用户;如果尚未缓存,节点会回源站拉取资源,缓存后再返回给用户。这种机制有效缩短了网络传输距离,显著提升了资源的加载速度,同时大幅降低了源站的带宽压力。
CDN 尤其适合图片、CSS 样式表、JavaScript 脚本、字体文件、安装包、音视频文件等静态资源的加速分发。对于前端项目,构建后的静态文件可以存放在对象存储 COS 中,再通过 CDN 加速访问。但对于频繁变化的动态接口,需要谨慎配置缓存规则,避免用户拿到过期数据。
需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联
2. 开通 CDN 服务与准备工作
在使用腾讯云 CDN 之前,需要完成以下准备工作:
- 注册腾讯云账号并完成实名认证。
- 进入 CDN 控制台,勾选同意服务条款后,单击“免费开通”即可开通 CDN/ECDN 服务。
- 准备一个已经完成备案的域名(如果加速区域选择中国境内或全球)。如果仅加速中国境外区域,域名可以不需要备案。
- 准备一个可访问的源站,可以是云服务器 CVM、对象存储 COS,也可以是第三方对象存储。
腾讯云 CDN 支持中国境内、中国境外和全球三个加速区域。不同加速区域的计费策略不同,且如果加速区域为全球,可以在域名配置中为境内和境外分别设置独立的区域源站。需要特别注意的是,如果加速区域为中国境内但源站位于中国香港或其他境外区域,跨境回源可能导致回源失败或速度变慢。
3. 添加加速域名
开通服务后,第一步是在 CDN 控制台添加加速域名。
3.1 进入域名管理
登录 CDN 控制台,单击左侧菜单栏的“域名管理”,进入域名管理列表页面。
3.2 单击“添加域名”
在域名管理页面单击“添加域名”按钮,进入域名配置向导。
3.3 配置域名基础信息
在域名配置页面需要填写以下核心信息:
- 加速域名:填写需要加速的业务域名,如
www.example.com。域名长度不超过81个字符。支持子域名(如a.b.example.com)和泛域名(如*.example.com)接入。如果加速区域为中国境内或全球,域名必须已经在工信部完成备案。 - 加速区域:根据用户分布选择“中国境内”、“中国境外”或“全球”。
- 加速类型:腾讯云 CDN 针对不同业务类型进行了针对性优化。CDN 类型包括:网页小文件(适用于电商、网站、UGC 社区等)、下载大文件(适用于游戏安装包、应用更新等)、音视频点播。ECDN 类型包括:动静加速(适用于动静态数据融合场景)、动态加速(适用于账号登录、API 调用等实时场景)。加速类型选定后不支持修改,如需更换需删除域名后重新添加。
- IPv6 访问:可选择仅支持 IPv4 或同时支持 IPv4+IPv6。
配置完成后单击“确认添加”,域名配置将下发至全网节点,预计需要5-10分钟。
4. 源站配置
源站配置是 CDN 对接的核心环节,决定了 CDN 节点在缓存未命中时从哪里拉取资源。
4.1 源站类型
腾讯云 CDN 支持多种源站类型:
- 自有源站:填写自有业务服务器的 IPv4 地址或域名作为源站。支持多 IP 轮询回源,可配置多个 IP 地址并设置权重。
- COS 源(对象存储):选择腾讯云 COS 存储桶作为源站。选择此类型后,在“源站地址”中选择对应的存储桶。如果存储桶为私有权限,需要先在 COS 存储桶的权限管理中为 CDN 服务授权。
- 第三方对象存储:支持 AWS S3、阿里云 OSS、华为 OBS、七牛云 kodo 等。
4.2 回源协议
回源协议决定了 CDN 节点回源时使用的协议:
- HTTP 回源:HTTP 和 HTTPS 访问均使用 HTTP 回源。
- HTTPS 回源:HTTP 和 HTTPS 访问均使用 HTTPS 回源,可避免回源数据被窃取或篡改。
- 协议跟随:HTTP 访问使用 HTTP 回源,HTTPS 访问使用 HTTPS 回源。
需要注意的是,如果选择 HTTPS 回源,源站必须支持 HTTPS 访问,否则会导致回源失败。
4.3 高级回源配置
腾讯云 CDN 支持更细粒度的回源配置,可根据不同规则将请求回源到不同的源站地址。支持的匹配规则包括:
- Client IP:根据用户 IP 归属地回源到指定源站。
- 文件后缀:按文件扩展名匹配回源。
- 文件目录:按目录路径匹配回源。
- 全路径文件:按完整文件路径匹配回源。
- 首页:针对首页文件单独配置回源地址。
单个域名最多可添加20条高级回源规则。
5. 配置 CNAME 解析
添加域名成功后,CDN 会为域名分配一个以 .cdn.dnsv1.com 或 .dsa.dnsv1.com 为后缀的 CNAME 地址。需要到域名 DNS 服务商处完成 CNAME 配置,才能正式启用 CDN 加速服务。
5.1 获取 CNAME 值
在 CDN 控制台的“域名管理”页面,找到已添加的域名,复制其 CNAME 值。
5.2 添加 CNAME 记录
前往域名 DNS 服务商的控制台(如腾讯云 DNSPod),为加速域名添加 CNAME 记录。填写示例:
- 主机记录:加速域名的前缀部分。例如加速域名为
www.example.com,主机记录填写www。 - 记录类型:选择
CNAME。 - 记录值:粘贴从 CDN 控制台复制的 CNAME 地址。
如果域名原来配置了 A 记录或 MX 记录,添加 CNAME 记录前需要先暂停或删除原记录。同一区域不能同时存在 CNAME 记录和 A 记录。
5.3 验证生效
CNAME 配置完成后,DNS 解析生效通常需要几分钟到半小时不等。可以在 CDN 控制台单击“验证 CNAME 状态”来确认是否生效。需要注意的是,CNAME 域名本身不能直接作为访问域名使用。
6. 缓存配置
缓存规则是 CDN 使用中的核心配置之一,直接影响加速效果和源站压力。
6.1 节点缓存过期配置
在域名配置页面的“缓存配置”标签页中,可以设置节点缓存过期规则。常见的缓存策略建议:
- 对于图片、字体、CSS、JS 等版本化资源(文件名包含 hash 值),可以设置较长的缓存时间(如7天或更长)。
- 对于 HTML 文件,建议缓存时间短一些,或根据发布策略进行刷新。
- 对于不希望缓存的内容(如动态接口),可以设置不缓存规则。
一个典型的缓存规则配置示例:
*.js、*.css、*.png、*.jpg → 缓存 7 天
*.html → 缓存 1 小时
/api/* → 不缓存6.2 缓存键规则配置
缓存键规则用于控制 CDN 如何识别和存储缓存资源。通过配置“忽略参数”规则,可以决定 URL 中的查询参数是否影响缓存命中。例如,对于图片资源,可以忽略 ?timestamp=xxx 这类参数,提高缓存命中率。
7. 缓存刷新与预热
7.1 缓存刷新
当源站资源更新后,CDN 节点上可能还保留着旧缓存。缓存刷新功能可以主动删除 CDN 节点上的缓存资源,确保用户访问到最新内容。
刷新方式分为两种:
- URL 刷新:删除指定 URL 在 CDN 所有节点上的缓存。
- 目录刷新:分为“刷新变更资源”(对比 Last-Modified 信息决定是否更新)和“刷新全部资源”(直接回源拉取新资源)两种模式。
提交限额:
- URL 刷新:每个账号单日限额10000个,单次提交不超过1000个。
- 目录刷新:每个账号单日限额100个,单次提交不超过500个。
7.2 缓存预热
缓存预热可将指定资源主动从源站加载至 CDN 加速节点并缓存。当用户首次请求时,可以直接从 CDN 节点获取资源,无需回源。
预热的典型适用场景:
- 安装包发布:新版本发布前将安装包预热至 CDN 节点,正式上线后海量用户下载请求直接由 CDN 响应。
- 运营活动:活动开始前将活动页涉及的静态资源预热至 CDN 节点。
提交限额:每个账号单日 URL 预热限额为1000个,单次提交不超过500个。
需要注意的是,预热时如果节点上的同名资源尚未过期,则不会进行资源加载。建议在文件更新时,先执行缓存刷新,再提交预热。提交大批量预热任务会造成源站带宽增大。
8. HTTPS 配置
腾讯云 CDN 全面支持 HTTPS 加速服务。可以通过上传自有证书,或将已托管至腾讯云 SSL 证书管理的证书直接部署至 CDN 平台。
8.1 配置步骤
在 CDN 控制台的“域名管理”中,单击目标域名右侧的“管理”,进入 HTTPS 配置页面:
- 开启 HTTPS 服务配置状态。
- 单击“配置证书”,选择证书来源:
- 新上传证书:手动上传 PEM 格式的证书内容和私钥。
- 已托管证书:选择已在 SSL 证书服务中托管的证书。
- 证书配置成功后即可开启 HTTPS 访问。
8.2 强制跳转
HTTPS 证书配置成功后,可以开启 HTTP 到 HTTPS 的强制跳转功能。开启后,即使用户发起 HTTP 请求,也会强制跳转为 HTTPS 进行访问。
8.3 计费说明
开启 HTTPS 服务后,CDN 域名加速产生的 HTTPS 请求数将独立计费。每月有300万次 HTTPS 请求的免费额度,超出部分按每万次0.05元计费。如果不需要 HTTPS 服务,可以将 HTTPS 配置状态设置为“关闭”。
9. 访问控制与安全配置
9.1 防盗链配置
腾讯云 CDN 提供了 Referer 防盗链配置功能,通过对 HTTP 请求头中 Referer 字段的值设置访问控制策略,限制访问来源,避免恶意盗刷。在域名配置页面的“访问控制”中,可以开启防盗链并配置黑名单或白名单。
9.2 时间戳防盗链(鉴权配置)
时间戳防盗链是一种更高级的访问控制方式。客户端发起请求时需要按照配置计算签名并携带至服务端,CDN 节点进行服务端校验,校验通过后才放行。配置位于域名配置页面的“访问控制”>“鉴权配置”。
9.3 IP 黑白名单与访问频率限制
还可以配置 IP 黑白名单和访问频率限制等安全策略。IP 限频、IP 黑白名单、区域访问控制产生的拒绝请求(状态码514)不纳入 HTTPS 计费。
10. 通过 Python SDK 调用 CDN API
腾讯云提供了官方的 Python SDK,方便开发者通过编程方式管理 CDN 服务。
10.1 安装 SDK
pip install tencentcloud-sdk-python-common
pip install tencentcloud-sdk-python-cdn10.2 初始化客户端
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.cdn.v20180606 import cdn_client, models
# 替换为您的 SecretId 和 SecretKey
cred = credential.Credential("YOUR_SECRET_ID", "YOUR_SECRET_KEY")
http_profile = HttpProfile()
http_profile.endpoint = "cdn.tencentcloudapi.com"
client_profile = ClientProfile()
client_profile.httpProfile = http_profile
client = cdn_client.CdnClient(cred, "", client_profile)10.3 查询域名列表
req = models.DescribeDomainsRequest()
params = {
"Limit": 10,
"Offset": 0
}
req.from_json_string(json.dumps(params))
resp = client.DescribeDomains(req)
print(resp.to_json_string())10.4 提交 URL 刷新任务
req = models.PurgeUrlsCacheRequest()
params = {
"Urls": [
"https://www.example.com/index.html",
"https://www.example.com/style.css"
]
}
req.from_json_string(json.dumps(params))
resp = client.PurgeUrlsCache(req)
print(resp.to_json_string())10.5 提交预热任务
req = models.PushUrlsCacheRequest()
params = {
"Urls": [
"https://www.example.com/app.apk"
]
}
req.from_json_string(json.dumps(params))
resp = client.PushUrlsCache(req)
print(resp.to_json_string())通过 SDK 还可以实现添加域名、修改域名配置、查询数据分析等操作。详细接口列表可参考腾讯云 CDN API 文档。
11. 计费与成本优化
11.1 计费模式
腾讯云 CDN 计费分为基础服务计费和增值服务计费两部分:
- 基础服务计费:使用 CDN 产生的流量或带宽费用,任选其一。CDN 侧不会收取回源流量费用。
- 增值服务计费:如 QUIC 访问请求数、APK 动态打包请求数等,不使用不计费。
11.2 流量计费 vs 带宽计费
流量计费是按用量产生时间段内所有用量之和计费;带宽计费是按用量产生时间段内的带宽峰值计费。对于流量波动较大的业务,按流量计费通常更经济;对于带宽稳定的业务,按带宽计费可能更合适。
11.3 流量包
按流量计费的客户可以预先购买流量包抵扣后续产生的流量费用。流量包到期或用完后,新产生的流量会自动转为后付费按量计费。如果加速区域为全球,不同区域产生的流量需要分别抵扣对应区域的流量包。
11.4 HTTPS 请求计费
HTTPS 请求数每月超出300万次后开始计费,按每万次0.05元计算。IP 限频、IP 黑白名单等安全策略产生的拒绝请求不纳入 HTTPS 计费。
11.5 成本优化建议
- 合理配置缓存规则,提高缓存命中率,减少回源流量。
- 对于大文件或安装包,提前进行缓存预热,降低源站突发带宽压力。
- 根据业务流量特征选择合适的计费模式(流量计费或带宽计费)。
- 关注 HTTPS 请求量,如果 HTTPS 请求量较大且超出免费额度,评估是否有必要全站开启 HTTPS。
12. 从开发测试到生产上线的完整流程
将以上各个环节串联起来,一个完整的 CDN 对接流程如下:
- 准备工作:完成账号实名认证,开通 CDN 服务,准备已备案的域名和可访问的源站。
- 添加域名:在 CDN 控制台添加加速域名,配置加速区域、加速类型和源站信息。
- 配置 CNAME:在 DNS 服务商处为域名添加 CNAME 记录,指向 CDN 分配的 CNAME 地址。
- 配置缓存规则:根据业务类型设置合理的节点缓存过期时间。
- 配置 HTTPS:上传 SSL 证书,开启 HTTPS 服务。
- 配置访问控制:根据需要开启防盗链、IP 黑白名单等安全策略。
- 预热资源:将热点资源提前预热至 CDN 节点。
- 验证生效:通过浏览器访问或 curl 命令验证加速效果,检查 CNAME 解析是否生效。
- 监控与运维:在 CDN 控制台监控流量、请求量、缓存命中率等指标,根据数据持续优化配置。
13. 常见问题与解答
问题1:添加域名时提示“域名未备案”怎么办?
如果加速区域选择的是“中国境内”或“全球”,域名必须已经在工信部完成备案。备案完成后需要等待1-2小时再重试添加域名。如果仅加速“中国境外”区域,域名不需要备案。
问题2:配置 CNAME 后访问域名出现 502 或无法访问?
首先检查 DNS 解析是否已生效。其次检查源站是否正常运行,以及回源协议配置是否正确。如果源站使用 HTTPS 但回源协议配置为 HTTP,会导致回源失败。
问题3:CDN 缓存刷新后为什么用户还是看到旧内容?
刷新任务生效时间约为5分钟。如果文件配置的缓存过期时间少于5分钟,刷新生效时间可能更短。另外,需要确认刷新的是正确的 URL(包含完整的协议和路径)。如果使用了浏览器缓存,可能需要强制刷新浏览器(Ctrl+F5)。
问题4:如何降低 CDN 费用?
可以从以下几个方面优化:合理配置缓存规则提高缓存命中率;对于大文件提前预热降低回源流量;根据业务流量特征选择合适的计费模式;购买流量包享受更优惠的价格;如果 HTTPS 请求量较大且超出免费额度,评估是否有必要全站开启 HTTPS。
问题5:CDN 加速域名和源站域名可以是同一个吗?
不可以。源站地址不能填写为已接入 CDN 加速且源站指向当前加速域名的站点,否则会造成循环解析,无法正常回源。加速域名与源站域名必须是不同的域名。
问题6:如何通过 API 自动刷新 CDN 缓存?
可以使用腾讯云 CDN Python SDK 调用 PurgeUrlsCache 接口提交 URL 刷新任务。也可以使用 QcloudCdnTools_V2.py 脚本工具。调用前需要确保 API 密钥已被分配正确的权限策略。





