背景
当静态内容需要更新时,通常会往 COS 覆盖上传一个更新版本的资源或删除该资源。当重新部署时,则 CDN 的某些边缘节点可能会仍然缓存旧资源。缓存过期时间太短,则会影响到加速的效果。
根据上述情况,需要使用 CDN 控制台上的 缓存刷新 功能,对指定 URL 进行手动刷新操作,实现删除无效缓存文件或者更新资源。
在此将结合 COS 和 SCF 的功能特性,在 COS 文件更新时,实现自动刷新 CDN 缓存的效果。
准备工作
- 腾讯云账户,需具备 COS、CDN、SCF 等产品的访问权限。
- 创建存储桶,并在该存储桶上绑定了 CDN 加速域名。
- 确保 COS 的存储桶的所属地域支持 SCF 产品功能,暂不支持跨地域调用。
- 准备好可调用 CDN 刷新接口的云 API 密钥,以及下载 SCF 刷新 CDN 示例代码。
工作步骤
创建SCF函数
- 登录 SCF 控制台,单击函数服务,选择与静态内容相同的地域并创建函数。如下图所示:
- 在 “新建函数” 页面,选择 “空白函数”,输入函数名称(如 refresh_cdn),设置运行环境(示例代码使用 Node.js 语言,因此运行环境设置为 Nodejs 6.10)。确认配置无误后单击【完成】即可。如下图所示:
配置函数
空白函数创建完成后,需添加对应的函数代码,并设定触发方式,使函数可以正常工作。
配置函数代码
- 下载 SCF 刷新 CDN 示例代码。
- 解压所有文件,找到其中的 index.js 文件并打开。
- 在代码里修改替换成您的具备调用 CDN 刷新接口权限的 SecretId、SecretKey 和需要刷新的域名。如下图所示:
- 如需调用刷新绑定在腾讯云海外 CDN 上的域名,请将代码中的 RefreshCdnUrl 修改为 RefreshCdnOverSeaUrl。
上传函数代码
- 将修改好的代码和其他文件重新压缩打包为 zip 格式文件。zip结构如下所示:
- 在 SCF 控制台中,选择 “函数代码” 页签,将 “提交方法” 设置为 “本地上传 zip 包”,并选择刚压缩的 zip 格式文件,单击【上传】。如下图所示:
添加触发方式
- 在 SCF 控制台中,选择 “触发方式” 页签,单击【添加触发方式】。
- 将 “触发方式” 设置为 “COS 触发”,并选择需刷新 COS 资源的存储桶。如下图所示:
- 根据实际需求,设置事件类型。
- 如果仅需要自动刷新 CDN 访问覆盖上传到 COS 的对象,则需将 “事件类型” 设置为 “文件上传”。
- 如果同时需要对删除行为也进行自动刷新,则需再添加一种触发方式,并将 “事件类型” 设置为 “文件删除”
- 勾选立即启用。
- 最后确认配置信息无误后,单击【保存】。
验证
上传一个新文件后再次访问即可验证。