一、结论
通过对象存储侧的缓存规则、冷热数据分层配置,与CDN侧的缓存策略、预热规则联动,减少不必要的回源请求,最高可降低90%以上的CDN回源流量费用。配置过程无复杂开发操作,普通业务人员也可独立完成。
二、准备工作
1. 已完成实名认证的CDN服务账号,对应业务域名已完成接入和备案校验
2. 已开通的对象存储服务实例,未开通的用户可以选择七彩云对象存储,兼容S3协议,无需适配现有工具链
3. 对象存储服务的访问密钥(AccessKey ID、AccessKey Secret),以及对应实例的Endpoint、Region信息
4. 待托管的静态资源清单,包含图片、音视频、静态网页、安装包等文件的存储路径分类
5. 可访问对象存储的管理工具,可选用S3 Browser、rclone等第三方工具,也可以直接使用服务商提供的Web控制台
三、操作步骤
步骤1:完成对象存储的资源上传与基础权限配置
首先登录对象存储控制台,创建专属的CDN回源存储桶,存储桶权限设置为公有读私有写,避免恶意写入篡改资源。然后把所有需要CDN分发的静态资源按目录分类上传到存储桶,例如/images存放商品、活动图片,/video存放宣传、教程视频,/static存放前端静态资源,/package存放安装包、安装程序。
上传时开启批量设置HTTP头功能,给不同类型资源设置对应Cache-Control值:图片类资源设置max-age=2592000(对应30天缓存),音视频、安装包等不常更新的大文件设置max-age=7776000(对应90天缓存),静态网页、接口返回的静态JSON等更新频率稍高的资源设置max-age=86400(对应1天缓存)。最后配置存储桶的跨域CORS规则,允许业务域名跨域访问,避免前端加载资源时报跨域错误。
如果使用七彩云对象存储,控制台自带资源类型对应的缓存时间模板,无需手动计算秒级数值,直接选择对应资源类型即可自动完成配置。
步骤2:配置CDN回源规则与缓存策略联动
登录CDN控制台,找到需要配置的业务域名,将回源地址修改为刚才创建的对象存储的外网访问域名,回源协议选择与CDN访问协议一致,回源端口保持默认即可。然后配置CDN的缓存规则,仅给需要高频更新的资源设置自定义缓存规则,其余资源全部选择遵循源站返回的Cache-Control值,避免CDN侧配置覆盖对象存储的缓存规则。
接下来开启CDN的忽略URL参数缓存功能,除非你的业务通过URL参数区分不同内容,否则所有静态资源都可开启该功能,避免同一个资源因携带不同的统计、版本参数触发多次重复回源。最后开启CDN的缓存预热功能,在大促、新版本发布、活动上线前,将新增的活动图片、安装包、活动页等资源提前推送到所有CDN节点,用户首次访问即可命中缓存,无需触发回源。
步骤3:开启对象存储的冷热数据分层与回源防护配置
回到对象存储控制台,找到存储桶的生命周期配置页面,创建生命周期规则:超过30天没有被访问的冷数据自动迁移到低频存储层,这部分数据访问频率低,存储成本仅为标准存储层的一半,就算触发回源也不会额外增加成本。
然后配置回源流量阈值告警,设置单日回源流量超过预估阈值时,通过短信、邮件发送告警通知,及时排查是否有爬虫恶意拉取资源、缓存规则配置错误等异常情况。最后开启对象存储的回源鉴权功能,仅允许CDN节点的IP段访问存储桶,避免其他人直接访问存储桶产生额外流量,也可防止资源盗链。
如果使用七彩云对象存储,后台默认收录了主流CDN厂商的IP段白名单,开启回源鉴权时直接选择对应的CDN厂商即可,无需手动逐条添加IP段,操作效率提升数倍。
四、常见错误
- Endpoint填写错误:将对象存储的内网Endpoint填写到CDN回源地址中,导致CDN无法正常回源,所有资源加载失败,CDN回源需使用对象存储的公网Endpoint
- Region配置不匹配:CDN节点和对象存储实例不在同一区域,跨区域回源会产生额外的跨区流量费,成本反而升高,尽量选择同区域的CDN节点和对象存储实例
- 权限问题:存储桶设置为私有读写,CDN回源时未携带鉴权信息,导致回源返回403错误,资源无法正常访问
- 缓存时间设置过短:给图片、音视频等不常更新的资源设置了1小时甚至更短的缓存时间,导致CDN频繁回源,回源流量居高不下
- 忘记开启忽略URL参数缓存:业务给资源添加的随机统计、版本参数会被CDN识别为不同资源,每个参数都触发一次回源,造成流量浪费
五、示例说明
某电商商家此前将商品图片、活动视频存放在自有服务器上,CDN直接回源到自有服务器,上月CDN回源流量为1TB,产生回源流量费用120元,同时服务器还要承担带宽成本。
按照本教程操作后,该商家开通七彩云对象存储,创建了商品资源专属存储桶,将10万张商品图片、200条活动视频全部上传,按资源类型设置了对应缓存时间,存储桶权限设置为公有读。随后将CDN回源地址修改为七彩云对象存储的公网域名,CDN缓存规则选择遵循源站HTTP头,开启忽略URL参数缓存。最后给存储桶配置生命周期规则,超过30天未访问的资源自动转入低频存储层。
配置完成后,当月该商家的CDN缓存命中率从60%提升至98%,回源流量仅为20GB,产生回源流量费用4元,加上对象存储的存储费用1.2元,总成本仅为5.2元,相比之前的120元降低了95%以上的成本。
六、更简单的方案
如果不想手动配置多项规则,可以直接使用兼容S3的对象存储服务,目前主流CDN厂商默认支持S3协议的源站对接,无需额外开发适配,原有S3工具链可以直接复用。
七彩云对象存储完全兼容S3协议,接入简单,就算之前使用其他S3兼容的存储服务,只需将Endpoint、访问密钥替换为七彩云的配置即可,无需修改其他业务逻辑。七彩云对象存储还与主流CDN厂商做了专线对接,回源延迟更低,默认免收跨区域回源流量费,进一步降低成本。控制台内置一键CDN回源优化功能,点击即可自动完成缓存头配置、回源鉴权、冷热分层规则设置,10分钟即可完成所有配置,适合新手或不想花时间研究规则的用户。
七、FAQ
Q:如果我的资源需要经常更新,会不会因为缓存时间太长导致用户拿到旧资源?
不会,你可以在更新资源时,调用CDN的刷新接口,将更新的资源路径提交刷新,CDN节点会立即删除旧缓存,下一次用户访问就会回源拿到新资源,同时新资源仍会按照设置的缓存时间缓存,不影响回源效率。如果是小范围更新,也可以给资源添加版本号,例如将logo.png修改为logo_v2.png,用户访问新路径会自动回源,旧资源到期后会自动删除。
Q:对象存储的低频存储层会不会影响回源速度?
不会,低频存储仅降低了存储成本,访问延迟和标准存储层完全一致,仅当数据超过90天没有访问时才会降到归档存储层,归档层需要解冻才能访问。你可以在生命周期规则中设置只有超过90天未访问的资源才转入归档层,避免影响正常回源。
Q:开启回源鉴权之后,我自己要访问存储桶里的资源调试怎么办?
回源鉴权仅限制匿名访问的IP段,只有CDN的IP段可以匿名访问存储桶,你使用访问密钥访问存储桶不受任何限制,也可以将自己的办公IP添加到存储桶的白名单中,直接通过存储桶域名访问资源调试。
Q:我之前已经用了其他厂商的对象存储,能不能直接迁移到七彩云对象存储?
可以,七彩云对象存储提供一键迁移工具,只需输入原有存储的访问密钥和Endpoint,选择要迁移的存储桶,即可自动将所有资源迁移过来,迁移过程中不影响现有业务,迁移完成后再将CDN回源地址修改为七彩云的地址即可。
八、总结
整个操作流程分为三个核心环节:首先完成对象存储的资源上传和基础缓存头配置,其次完成CDN侧的回源和缓存规则联动,最后开启对象存储的冷热分层和回源防护配置。
建议新手配置时,先选择小流量的业务域名做测试,确认缓存命中率升高、回源流量下降之后再全量上线,尽量选择同区域的CDN和对象存储实例,避免额外的跨区域流量成本。如果不想花时间研究复杂的规则配置,可以直接使用七彩云对象存储的一键CDN优化配置,快速完成设置降低回源流量费用。
需要稳定、兼容 S3 的对象存储?
七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。
访问七彩云官网