阿里云 CDN 静态文件不回源更新的解决方法
核心关键
阿里云 CDN 静态资源不更新的解决方法,可以通过配置刷新和预热来解决;
这个问题是因为我第一次使用阿里云的 CDN 产品,不熟悉他的套路,现在用一篇文章记录一下;
(以前使用又拍云的时候,云存储和 CDN 是自动配好的;静态资源更新的时候,CDN 会自动回源更新,不需要开发者再做什么)
场景描述
使用阿里云的 CDN ,阿里云的 OSS 作为 CDN 的源,CDN 的范围是全球加速;
OSS 上的文件更新了,但是通过 CDN 配置的域名访问,拿到的还是旧文件;
现象如下:
- OSS 上的文件是:
https://xxx-public.oss-cn-hangzhou.aliyuncs.com/path/aaa.js
- CDN 配置路径是:
http://xxx.axihe.com/path/aaa.js
测试场景
- 浙江杭州 - 电信
- 北京 - 电信
- 香港服务器(没有留意是什么网络服务商)
我们需要做的,就是让 CDN 的资源更新;
解决办法
需要配置 CDN 刷新和预热
CDN 提供资源的刷新和预热功能。
通过刷新功能,您可以强制 CDN 节点回源并获取最新文件;
通过预热功能您可以在业务高峰期预热热门资源,提高资源访问效率。
下面记录刷新和预热功能的配置方法;
背景信息
阿里云 CDN 刷新和预热功能支持 URL 刷新、目录刷新、URL 预热;
CDN 提供资源的刷新和预热功能。通过刷新功能,您可以强制 CDN 节点回源并获取最新文件;通过预热功能您可以在业务高峰期预热热门资源,提高资源访问效率。刷新和预热功能的原理、生效时间及可参考的 API 接口。
CDN 提供的资源的刷新和预热功能的概念如下:
刷新功能是指提交 URL 刷新或目录刷新请求后,CDN 节点的缓存内容将会被强制过期,当您向 CDN 节点请求资源时,CDN 会直接回源站获取对应的资源返回给您,并将其缓存。刷新功能会降低缓存命中率。 预热功能是指提交 URL 预热请求后,源站将会主动将对应的资源缓存到 CDN 节点,当您首次请求时,就能直接从 CDN 节点缓存中获取到最新的请求资源,无需再回源站获取。预热功能会提高缓存命中率。 刷新和预热功能的详细说明如下表所示。
分类 | 原理 | 生效时间 | API 接口 |
---|---|---|---|
URL 刷新 | 通过提供目录下文件的方式,强制 CDN 节点回源获取最新文件。 | 5 分钟内 | RefreshObjectCaches |
目录刷新 | 通过提供目录及目录下所有文件的方式,强制 CDN 节点回源获取最新文件。 | 5 分钟内 | RefreshObjectCaches |
URL 预热 | 将指定的资源主动预热到 CDN 的二级节点上,用户首次访问即可直接命中缓存。 | 5 分钟内 | PushObjectCache |
操作步骤
-
登录 CDN 控制台。
-
在左侧导航栏,单击刷新预热
-
在刷新缓存区域,您可以根据所需,配置刷新或预热信息。
参数 说明 操作类型 操作类型包括: - 刷新
您可以在源站资源更新后,刷新 URL,系统自动清除 CDN 节点上的垃圾数据,下次访问 URL 时,直接回源获取最新数据,并缓存到 CDN 节点。
- 预热
您可以在业务高峰前预热热门资源,也可以预热流量较低的加速域名,来提高缓存命中率。
刷新类型 刷新类型包括: - 目录
当操作类型选择刷新时,需要选择该参数。
- URL
当操作类型选择刷新或预热时,需要选择该参数。
URL 当您需要刷新或预热多条请求时,请按照一行一个URL进行输入。配置URL时,不同操作类型的注意事项如下: - 目录刷新
输入的URL,需以
http://
或https://
开始,以/
结束。同一个ID每天最多提交100个刷新请求,一次可全部提交。
- URL刷新
输入的URL必须带有
http://
或https://
。同一个ID每天最多提交2000个刷新请求,每次最多只能提交1000条。
- URL预热
输入的URL必须带有
http://
或https://
。同一个ID每天最多预热500个URL,每次最多只能提交100条。
- 刷新
-
单击提交。
-
单击操作记录。
-
在操作记录区域,配置查询时间、操作类型、域名或 URL,单击查询。
您可以查看资源刷新或预热的详细记录,包括:操作内容、操作类型、操作时间、状态和进度。
API 接口
您可以调用 API 接口,实现资源的刷新和预热,详情如下表所示。
API | 描述 |
---|---|
PushObjectCache | 调用 PushObjectCache 将源站的内容主动预热到 L2 Cache 节点上,您首次访问可直接命中缓存,缓解源站压力。 |
DescribeRefreshQuota | 调用 DescribeRefreshQuota 查询刷新、预热 URL 及目录的最大限制数量,以及当日剩余刷新、预热 URL 及目录的次数。 |
DescribeRefreshTasks | 调用 DescribeRefreshTasks 查询刷新、预热状态是否在全网生效。 |
RefreshObjectCaches | 调用 RefreshObjectCaches 刷新节点上的文件内容。刷新指定 URL 内容至 Cache 节点,支持 URL 批量刷新。 |