网站、小程序、APP下载、图片视频业务上线之后,静态图片、JS、CSS、字体、安装包、视频片段等静态资源如果全部由源站直接对外提供服务,会出现诸多痛点:跨地域用户访问延迟高,大量用户并发访问直接打满源站带宽,源站服务器压力巨大,带宽成本居高不下。阿里云CDN是分布式内容分发网络,在全球大量城市部署边缘节点,将静态资源缓存到距离用户最近的边缘节点,用户访问资源直接就近读取边缘节点缓存,减少回源源站请求,降低源站负载,缩短访问延迟,同时可以搭配SSL证书实现HTTPS加速,提供防盗链、访问控制、日志分析等全套安全能力,源站可以是ECS云服务器、OSS对象存储等多种类型,适配官网、小程序、APP下载、短视频素材分发等各类业务场景。
本文完整讲解CDN产品定位、核心产品能力、缓存与回源原理、完整计费规则、域名接入全流程、缓存策略配置、刷新预热操作、阿里云CLI命令行、Python SDK实操,梳理缓存调优、成本优化方案以及高频故障排查要点,帮助开发者完成从域名接入到业务稳定上线全流程落地。详情👉访问阿里云 CDN 服务平台了解
一、CDN内容分发产品定位与核心产品能力
CDN全称Content Delivery Network内容分发网络。核心工作逻辑:用户请求加速域名,智能DNS调度用户访问就近边缘节点;节点没有缓存资源,则向源站发起回源拉取资源,资源缓存到边缘节点之后返回给用户;后续相同请求直接读取节点缓存,不再访问源站,实现加速、降源站压力的效果。
核心产品功能
全球边缘节点网络,就近访问加速
国内各大城市以及海外多区域部署边缘节点,用户访问自动调度到距离最近网络质量最优节点,大幅降低跨地域访问延迟,国内业务、出海业务都可以适配。支持OSS、ECS、自建服务器多种源站类型,OSS作为源站场景,同地域回源走内网链路,回源不产生外网流量开销。精细化缓存策略管控
支持后缀匹配、路径匹配、请求头匹配多种缓存规则,可以针对图片、脚本、视频、下载包分别设置缓存过期时长;支持自定义Cache‑Key,控制哪些URL参数参与缓存key计算;支持状态码缓存,404、500等错误状态码也可以缓存,减少无效回源请求;支持源站缓存头优先模式,优先遵循源站Cache‑Control响应头,也可以强制覆盖源站缓存策略,灵活平衡内容更新频率与缓存命中率。强大回源能力,适配各类源站场景
支持自定义回源HOST,解决源站虚拟主机多站点部署场景;Range分片回源,大文件视频、安装包分片拉取,大文件只回源部分片段,提升大文件分发效率;支持回源302跟随,节点直接处理源站302跳转,减少客户端跳转次数;支持回源SNI配置,源站开启HTTPS场景保障回源正常;支持权重多源站,主备源站故障自动切换,提升业务可用性。刷新、预热能力,主动管控边缘缓存
刷新功能:源站资源更新之后,主动清除边缘节点旧缓存,用户可以快速获取新版本资源;支持URL刷新、目录刷新。预热功能:活动大促、新版本发布前,主动将热门资源推送到各个边缘节点,活动期间用户全部命中缓存,避免瞬间大量回源压垮源站。刷新预热有每日额度限制,大文件、大批量资源需要合理规划调用频次。完整安全访问防护体系
Referer防盗链黑白名单,拦截盗链爬虫盗用资源消耗流量;IP黑白名单,针对客户端IP做访问放行或者拦截;URL鉴权,生成带时效签名访问链接,防止资源被恶意下载;支持HTTPS加速,数字证书管理服务一键部署证书,支持强制HTTP跳转HTTPS;支持修改出站响应头,配置跨域CORS,解决前端JS跨域报错;支持边缘WAF,拦截恶意攻击请求,防护注入、爬虫风险。完善监控与日志分析
提供命中率、QPS、带宽峰值、回源带宽、错误码占比等丰富监控指标;配置告警,带宽突增、命中率过低、大量5xx错误及时告警;支持实时日志投递,将访问日志推送至日志服务,做访问统计、爬虫分析、故障排查。规则引擎、边缘脚本能力
规则引擎可以基于请求条件做复杂逻辑配置,实现重定向、修改请求头响应头、修改缓存策略;边缘脚本支持轻量自定义脚本逻辑,满足复杂业务分发逻辑。全套OpenAPI、阿里云CLI支持自动化运维
域名增删改查、刷新预热、查询监控用量、配置缓存规则全部开放API接口,适合DevOps流水线,版本发布自动调用刷新接口清理旧缓存,不需要人工登录控制台操作。
核心概念区分
- 下行流量:用户从CDN边缘节点下载资源,该流量为CDN计费流量。
- 回源流量:CDN节点向源站拉取资源,CDN侧不计费,但是源站会产生流出流量,OSS源站回源同地域内网不计外网流量。
- 缓存命中率:命中缓存请求占全部请求比例,命中率越高,回源越少,源站压力越小,成本越低,业务调优核心目标就是提升缓存命中率。
二、CDN完整计费规则深度拆解
CDN整体分为基础必选服务和可选增值服务两大部分,基础服务包含下行流量/带宽费用;增值服务按需开启,不开启不会产生开销。详情👉访问阿里云 CDN 服务平台了解
基础服务三种计费模式
按流量计费(系统默认)
按照用户访问产生的下行实际流量计费,自然月账号维度阶梯累进,流量越大单价越低,按小时后付费;支持购买下行流量资源包抵扣。适合流量波动大、峰值尖峰明显、带宽利用率低的业务,绝大多数中小网站、小程序业务优先选择按流量计费。按带宽峰值计费
按每日带宽峰值计费,每5分钟采集带宽数据,取当日最大值按日结算。适合流量曲线平稳,带宽利用率高的业务;该模式无法使用流量资源包抵扣,变更计费模式需要满足业务条件,部分场景需要联系商务开通权限。月结95带宽峰值计费
面向月消耗较高的企业客户,需要商务申请开通,适合大流量企业级业务场景。
增值服务计费项(可选)
- 静态HTTPS请求数:开启HTTPS加速,静态资源HTTPS请求单独按请求次数计费,可以购买请求资源包抵扣。
- QUIC请求、边缘WAF防护、实时日志投递等,开启后单独计费,不使用不计费。
注意:动态请求(接口、表单)不属于静态CDN,需要全站加速DCDN产品,普通CDN只适合静态资源分发。
资源包抵扣规则
下行流量资源包仅在按流量计费模式生效,账号级别自动抵扣,多个加速域名共用资源包;中国大陆与海外区域资源包相互独立,不能跨区域抵扣;流量资源包只抵扣下行流量,不能抵扣HTTPS请求数等增值计费项,资源包过期之后不会结转剩余额度。
计费避坑重点
- CDN关闭之后,本地DNS还存在缓存,短时间仍然会有少量请求打到CDN节点,产生少量流量消耗,属于正常现象。
- 回源流量CDN不收费,但源站(ECS/OSS)会产生流出流量,OSS优先同地域源站,使用内网回源消除外网回源流量。
- Referer防盗链没有配置,资源被爬虫盗刷,会产生巨额下行流量账单,上线务必配置防盗链或者URL鉴权。
- HTTPS请求数属于独立计费项,流量包不能抵扣HTTPS请求,业务量大需要同时购买HTTPS请求资源包。
- 按带宽峰值计费模式下,流量资源包不生效,购买流量包不会抵扣账单。
选型建议
- 个人站点、中小官网、小程序静态资源:默认按流量计费,流量稳定购买流量资源包,流量波动大直接按量后付费。
- 大文件下载、视频分发业务:优先按流量计费,配置Range回源,提升缓存命中率,减少回源开销。
- 流量平稳大型企业业务:评估带宽峰值计费模式,联系商务确认。
- 对外公开资源业务:必须配置防盗链或者URL鉴权,防止恶意盗刷。
三、CDN域名接入完整实操步骤
- 进入CDN控制台,域名管理页面,添加加速域名,填写业务域名,选择加速区域(中国大陆/全球)。
- 配置源站信息:源站类型选择OSS域名或者ECS服务器IP/域名;填写源站地址,设置回源HOST;OSS源站优先选择同地域,开启内网回源。
- 配置缓存规则:区分图片、脚本、下载文件设置缓存过期时间;动态接口页面设置不缓存。
- 配置HTTPS证书:从数字证书管理服务选择已签发证书,开启强制跳转HTTPS。
- 配置安全策略:Referer防盗链黑白名单、IP黑白名单;需要前端JS访问资源配置跨域CORS响应头。
- 配置自定义错误页面、监控告警阈值。
- 域名添加完成之后控制台获取CNAME记录,域名解析服务商把业务域名CNAME指向CDN分配域名;等待解析生效,测试访问,验证资源是否走CDN加速。
- 上线之后观察缓存命中率监控,如果命中率偏低,需要调优缓存规则。
最佳实践:动态接口不要接入普通CDN,普通CDN适合静态资源;图片、JS、CSS、字体、视频、安装包这类静态资源接入CDN。
四、阿里云CLI命令行实操示例
阿里云CLI可以完成刷新、预热、查询域名信息,适合自动化脚本执行,提前配置账号AccessKey权限。
#安装阿里云CLI
npm install -g @alicloud/cli
aliyun configure
#查询账号下CDN加速域名列表
aliyun cdn DescribeCdnDomains
#URL刷新,清除单条资源缓存
aliyun cdn RefreshObjectCaches --ObjectPath "https://cdn.demo.com/images/a.jpg" --ObjectType File
#目录刷新,刷新整个目录下全部缓存
aliyun cdn RefreshObjectCaches --ObjectPath "https://cdn.demo.com/images/" --ObjectType Directory
#资源预热,把资源主动推送到边缘节点
aliyun cdn PushObjectCache --ObjectPath "https://cdn.demo.com/files/demo.zip"
#查询CDN域名监控带宽QPS数据
aliyun cdn DescribeCdnDomainMonitoringData --DomainName cdn.demo.com
五、Python SDK完整代码示例
安装SDK依赖
pip install alibabacloud_cdn20180510
import os
from alibabacloud_cdn20180510.client import Client as CdnClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_cdn20180510 import models as cdn_models
def create_cdn_client():
config = open_api_models.Config()
config.access_key_id = os.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
config.access_key_secret = os.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
config.endpoint = "cdn.aliyuncs.com"
return CdnClient(config)
def list_cdn_domains():
"""查询CDN加速域名列表"""
client = create_cdn_client()
resp = client.describe_cdn_domains()
for domain_info in resp.body.domains.domain_data:
print(f"域名:{domain_info.domain_name},状态:{domain_info.status},源站:{domain_info.origin}")
def refresh_url(url: str):
"""刷新单个URL缓存"""
client = create_cdn_client()
req = cdn_models.RefreshObjectCachesRequest()
req.object_path = url
req.object_type = "File"
resp = client.refresh_object_caches(req)
print(f"刷新任务ID:{resp.body.refresh_task_id}")
if __name__ == "__main__":
list_cdn_domains()
refresh_url("https://cdn.demo.com/img/test.jpg")
六、缓存策略、防盗链、跨域关键配置说明
缓存规则配置最佳实践
图片jpg、png、webp,字体woff2,静态资源更新频率低,设置较长缓存时间;JS、CSS资源建议设置中等缓存时长;动态接口、表单页面设置不缓存。资源更新建议带上版本哈希后缀,例如/js/main?v=123,更新版本修改参数,不需要执行刷新操作,直接命中新资源。如果资源无法增加版本参数,源站更新后调用刷新接口清理旧缓存。Referer防盗链配置
填写业务域名白名单,勾选允许空Referer根据业务实际情况;禁止直接放行全部Referer,防止盗链爬虫大量下载资源。对于APP客户端场景,客户端没有Referer请求头,需要开启允许空Referer,或者改用URL鉴权模式。跨域CORS配置
前端JS直接加载CDN图片、字体,浏览器会触发跨域校验;在CDN控制台修改出站响应头,添加Access‑Control‑Allow‑Origin等跨域响应头,不需要修改源站配置,CDN节点直接返回跨域头给浏览器。URL鉴权
高下载业务,推荐开启URL鉴权,访问URL带上时效签名,过期链接直接拒绝访问,比Referer防盗链安全性更高,适合APP下载、付费素材分发场景。回源HOST配置
源站是ECS服务器,服务器上部署多个虚拟主机站点,必须正确填写回源HOST,否则回源访问源站返回403、404错误;OSS源站场景回源HOST填写OSS Bucket域名。
七、成本优化实用方案
- 提升缓存命中率,减少回源请求,合理设置缓存过期时间,静态资源尽量长缓存,资源更新使用版本哈希参数,减少频繁刷新操作。
- OSS源站务必使用同地域源站,开启内网回源,消除源站外网流出流量开销。
- 上线必须配置防盗链/URL鉴权,避免爬虫盗刷产生巨额下行流量账单。
- 业务流量稳定优先购买流量资源包;流量波动大、测试业务直接按量付费。
- 不需要不要开启实时日志投递、边缘WAF增值功能,按需开启,减少额外计费。
- 大促活动提前做资源预热,避免活动瞬间大量回源,同时降低源站压力。
- 定期查看监控,关注带宽、流量、命中率指标,及时发现异常访问。详情👉访问阿里云 CDN 服务平台了解
八、高频报错与排错指南
- 访问资源404:检查CNAME解析是否已经生效;回源HOST配置是否正确;源站是否存在对应文件;源站安全组是否放行CDN回源IP。
- 更新源站资源,浏览器依旧看到旧版本:缓存未过期,执行URL刷新;浏览器本地缓存,清除浏览器缓存测试。
- 缓存命中率持续很低:缓存过期时间设置过短;URL参数变化导致Cache‑Key不一致;资源频繁刷新;动态资源错误接入CDN。
- 跨域报错:CDN配置出站响应头CORS规则,不要只在源站配置跨域头,如果资源已经缓存旧响应头,需要执行刷新。
- HTTPS访问报错不安全:检查证书是否完整部署;证书域名与加速域名匹配;443端口源站正常。
- 账单流量暴涨:优先排查是否资源被盗链爬虫抓取,立刻配置防盗链或者URL鉴权。
- 回源502、503错误:源站负载过高;源站防火墙拦截CDN回源IP;源站HTTPS证书异常,回源SNI配置错误。
总结
阿里云CDN把静态资源缓存到遍布各地边缘节点,就近响应用户请求,降低访问延迟,大幅削减源站服务器带宽压力,是网站、小程序、APP业务静态分发的标准解决方案。接入业务需要区分静态资源与动态接口,动态接口不适合普通CDN;上线务必配置防盗链防护,避免盗刷带来高额账单。
调优核心目标是提升缓存命中率,合理规划缓存规则,资源更新优先使用版本哈希,减少刷新调用;OSS源站优先同地域内网回源,降低源站流量开销。同时可以通过OpenAPI、CLI实现刷新预热自动化,融入CI/CD发布流程,版本发布自动清理缓存,减少人工运维工作量,保障静态资源分发稳定、低成本、高性能。