使用 SCF 自动刷新被 CDN 缓存的 COS 资源

背景

当静态内容需要更新时,通常会往 COS 覆盖上传一个更新版本的资源或删除该资源。当重新部署时,则 CDN 的某些边缘节点可能会仍然缓存旧资源。缓存过期时间太短,则会影响到加速的效果。

根据上述情况,需要使用 CDN 控制台上的 缓存刷新 功能,对指定 URL 进行手动刷新操作,实现删除无效缓存文件或者更新资源。

在此将结合 COS 和 SCF 的功能特性,在 COS 文件更新时,实现自动刷新 CDN 缓存的效果。

准备工作

  1. 腾讯云账户,需具备 COS、CDN、SCF 等产品的访问权限。
  2. 创建存储桶,并在该存储桶上绑定了 CDN 加速域名。
  3. 确保 COS 的存储桶的所属地域支持 SCF 产品功能,暂不支持跨地域调用。
  4. 准备好可调用 CDN 刷新接口的云 API 密钥,以及下载 SCF 刷新 CDN 示例代码。

工作步骤

创建SCF函数

  1. 登录 SCF 控制台,单击函数服务,选择与静态内容相同的地域并创建函数。如下图所示:
  2. 在 “新建函数” 页面,选择 “空白函数”,输入函数名称(如 refresh_cdn),设置运行环境(示例代码使用 Node.js 语言,因此运行环境设置为 Nodejs 6.10)。确认配置无误后单击【完成】即可。如下图所示:

    配置函数

    空白函数创建完成后,需添加对应的函数代码,并设定触发方式,使函数可以正常工作。
配置函数代码
  1. 下载 SCF 刷新 CDN 示例代码
  2. 解压所有文件,找到其中的 index.js 文件并打开。
  3. 在代码里修改替换成您的具备调用 CDN 刷新接口权限的 SecretId、SecretKey 和需要刷新的域名。如下图所示:
  4. 如需调用刷新绑定在腾讯云海外 CDN 上的域名,请将代码中的 RefreshCdnUrl 修改为 RefreshCdnOverSeaUrl。
    上传函数代码
  5. 将修改好的代码和其他文件重新压缩打包为 zip 格式文件。zip结构如下所示:
  6. 在 SCF 控制台中,选择 “函数代码” 页签,将 “提交方法” 设置为 “本地上传 zip 包”,并选择刚压缩的 zip 格式文件,单击【上传】。如下图所示:
添加触发方式
  1. 在 SCF 控制台中,选择 “触发方式” 页签,单击【添加触发方式】。
  2. 将 “触发方式” 设置为 “COS 触发”,并选择需刷新 COS 资源的存储桶。如下图所示:
  3. 根据实际需求,设置事件类型。
    • 如果仅需要自动刷新 CDN 访问覆盖上传到 COS 的对象,则需将 “事件类型” 设置为 “文件上传”。
    • 如果同时需要对删除行为也进行自动刷新,则需再添加一种触发方式,并将 “事件类型” 设置为 “文件删除”
  4. 勾选立即启用。
  5. 最后确认配置信息无误后,单击【保存】。

验证

上传一个新文件后再次访问即可验证。

0%