CDN回源配置详解:云存储与源站数据同步方案

2026-07-21 13 阅读 数据迁移备份
数据迁移备份
CDN回源配置详解:云存储与源站数据同步方案

图片迁到OSS之后,客户反馈有些页面图片时有时无,刷新一下又出来了。排查下来是CDN回源地址还指向老服务器,部分新图片老服务器上根本没有。CDN回源配置看着简单,但细节没处理好,数据迁移备份之后的坑一个接一个。

回源地址必须切换到云存储域名

CDN加速的工作原理是:用户请求先打到CDN边缘节点,节点有缓存就直接返回,没缓存就回源站拉取。图片迁到云存储后,回源地址必须改成OSS或COS的外网域名。

在CDN控制台找到域名管理 → 源站信息 → 修改源站。源站类型选“域名”,填入 bucket名.oss-cn-区域.aliyuncs.com。回源协议选HTTPS(前提是OSS域名已配证书)。回源Host填OSS的域名,别填你的自定义域名,否则OSS会报403。

一个容易踩的坑:如果CDN和OSS不在同一个账号下,OSS的Bucket权限要设为“公共读”,否则CDN回源会被拒绝。用RAM角色做跨账号授权更安全,但配置稍复杂。

缓存策略:决定用户看到新图片的速度

图片更新后用户看到的还是旧图?这是CDN缓存没过期。缓存策略有两个层面要配:

CDN节点缓存时间:在缓存配置里按文件后缀设置。JPG、PNG、GIF等图片文件建议缓存30天。CSS、JS缓存7天。HTML不缓存或缓存1分钟。

源站缓存控制头:OSS支持设置对象的 Cache-Control 头。上传时加上 --metadata Cache-Control:max-age=2592000(30天的秒数),CDN会优先遵循源站的缓存指令。

遇到紧急更新需要立即生效的情况,用CDN控制台的“刷新预热”功能,提交URL刷新请求,几秒内全网节点缓存清掉。批量刷新用“目录刷新”,一次清整个文件夹的缓存。

增量同步:新上传文件自动到CDN

日常运营中新的图片还在往服务器传,怎么确保自动同步到云存储再到CDN?两个方案:

方案一改代码,上传逻辑直接调OSS SDK写到云存储,本地不存了。这是最干净的做法,但需要改后端代码。

方案二不改动代码,用定时任务把本地uploads目录增量同步到OSS。写个crontab每5分钟跑一次 ossutil cp -r /uploads/ oss://bucket/uploads/ --update,--update保证只传新增和修改的文件。5分钟的延迟对大部分业务可接受。

数据迁移备份不是一次性的活儿,迁移完成后的同步机制同样重要。上线前用Chrome DevTools的Network面板验证一遍:图片请求是否命中CDN缓存(看Response Headers的X-Cache字段),回源是否正常,缓存过期后能否正确拉取新图。