You need to enable JavaScript to run this app.
文档中心
函数服务

函数服务

复制全文
下载 pdf
功能应用
使用函数实现 TOS 触发 CDN 刷新预热
复制全文
下载 pdf
使用函数实现 TOS 触发 CDN 刷新预热
本文为您介绍如何通过函数服务实现 TOS 触发 CDN 刷新/预热任务。​
场景介绍​
互联网应用大多采用动静分离架构,将视频、音频、图片、JS 脚本等静态资源放在对象存储(TOS) 中,并使用 CDN 进行访问加速。若 TOS 的旧资源发生更新或升级,就需要及时更新节点已缓存内容,避免用户仍访问到旧的缓存资源。​
CDN 提供刷新/预热功能,支持手动提交缓存刷新/预热任务。然而手动运维并不高效且容易出错,函数服务可以帮助您实现 TOS 变更自动触发 CDN 刷新/预热,极大地提高运维效率。​
背景信息​
  • CDN:内容分发网络(Content Delivery Network,CDN)面向内容提供商,针对其在互联网上传播的图片、音视频、网页、下载包等静态内容,提供传输加速服务,优化用户访问体验,提高下载速度。更多介绍请参见 什么是内容分发网络。​
  • 刷新:在 CDN 节点上删除已经缓存的指定内容或将其标记为已过期。这样当用户下次访问节点获取内容时,节点将从源站拉取最新的内容,返回给用户并进行缓存。​
  • 预热:CDN 节点主动从源站拉取特定文件(一般是大文件,如视频文件、安装包文件等),并将文件缓存在节点上。这样当用户请求对应文件时,CDN 节点可以直接返回文件。该方式减少了节点从源站获取文件带来的延时,避免了用户同时请求大文件时源站下载压力过大。​
前提条件​
  • 内容分发网络​
  • 已开通火山引擎内容分发网络。​
  • 已添加您的站点域名作为加速域名,并将加速域名与您的 TOS Bucket 绑定(即将您的 TOS Bucket 作为加速域名的源站 ),具体操作可参见 设置加速域名。​
  • 已获取 API 访问密钥(AK 和 SK),并确保该密钥具有 CDN 缓存预热(SubmitPreloadTask)、缓存刷新(SubmitRefreshTask)的操作权限。具体操作可参见 Access Key(密钥)管理 和 创建用户并授权。​
  • 函数服务​
  • 已开通火山引擎函数服务。​
  • 日志服务​
  • 如需使用函数的日志功能,请提前开通火山引擎日志服务。​
使用限制​
  • 仅支持文件预热或文件刷新任务,暂不支持目录刷新任务。​
  • 一个函数仅能执行一种任务类型,无法同时执行文件预热和文件刷新任务。​
  • CDN 存在每日刷新/预热配额上限,执行当天如超过当日配额可能导致任务失败。详细内容可参见 刷新配额 和 预热配额。​
操作步骤​
步骤一:使用代码模板创建函数​
使用 vefaas-golang-cdn-refresh-preload 代码模板创建函数,并将代码需要获取的 AK 和 SK 等信息配置为环境变量。​
  1. 在顶部导航栏,选择目标地域。​
  1. 在函数列表页面,单击 创建函数。​
  1. 在创建函数页面,主要参数按如下说明配置,其余参数请参见 创建事件函数 按需配置。​
  • ​alt​​
  • ​
    配置项​
    说明​
    创建函数的方式​
    选择 创建「事件函数」。​
    基础配置​
    ​
    名称​
    根据界面提示的命名规则,自定义函数名称。创建函数成功后名称不可修改。​
    函数代码​
    ​
    运行时​
    选择 Golang。​
    部署方式​
    选择 函数模板 > vefaas-golang-cdn-refresh-preload。​
    高级配置​
    ​
    日志功能​
    启用日志功能,投递至默认日志集。​
    环境变量​
    需新增以下 4 条环境变量:​
    • CloudAPI_AccessKey:输入 API 访问密钥的 Access Key ID。​
    • CloudAPI_SecretKey:输入 API 访问密钥的 Secret Access Key。​
    • TOS_EVENT_TASK_KIND:输入要执行的任务类型。支持的取值如下:​
    • refresh:(默认值)文件刷新。​
    • preload:文件预热。​
    • BASE_URL_LIST:输入待执行任务的 URL,例如http://cdndomain1/,http://cdndomain2/,http://cdndomain3/。支持添加多个 URL,多个 URL 之间以英文逗号分隔。当 TOS 事件触发后,函数服务会将该列表中的每个 URL 拼接 TOS 文件名,作为最终刷新/预热 URL 提交给 CDN。​
    ​
  1. 单击 确定,完成函数创建。​
步骤二:发布函数​
将函数的当前代码和配置发布至线上。​
  1. 在函数详情页面,单击右上角的 发布。​
  1. 函数版本 使用 Latest,其余参数按需填写或保持默认值。​
  1. 单击 确定 函数进入发布中。函数发布成功后如下图所示。​
  • ​​​
步骤三:配置 TOS 触发器​
为当前函数配置 TOS 触发器,设置触发函数的规则。​
  1. 切换至触发器页签,单击 创建触发器。​
  1. 按要求配置触发器信息。更多参数介绍请参见 创建 TOS 触发器。​
  • ​
    配置项​
    说明​
    触发器类型​
    选择 TOS 触发器。​
    触发器名称​
    根据界面提示规则自定义触发器名称。​
    TOS Bucket​
    选择前提条件中准备的 TOS Bucket。​
    触发事件​
    本示例选择 tos:ObjectCreated:Put 和 tos:ObjectCreated:CompleteUpload。​
    注意​
    有大文件分片上传的情况下,需要同时选择 tos:ObjectCreated:Put 和 tos:ObjectCreated:CompleteUpload。若无分片上传的情况,可只选择 tos:ObjectCreated:Put,通过简单上传对象后触发。​
    过滤条件​
    通过设置过滤条件,可精确匹配需要监听的事件所包含的对象范围,有效降低触发频率,减少成本。本示例不设置。​
    ​
  1. 单击 确定,完成 TOS 触发器创建。​
  • ​​​
结果验证​
  • 控制台验证​
  1. 在当前函数的触发器页签下,选择刚才创建的 TOS 触发器,单击 Bucket 名称,跳转至对象存储控制台的对应 Bucket。单击 上传文件,从本地提交一个文件。​
  • ​​​
  1. 返回函数服务控制台,进入当前函数的资源管理页签。单击 日志,查看函数实例的实时日志,可看到已成功提交刷新/预热任务。​
  • ​​​
  • ​​​
  1. 若启用日志功能,可进入当前函数的 日志 页签。查询当前函数的执行日志,可看到已成功提交刷新/预热任务。​
  • ​​​
  1. 进入 CDN 控制台的 刷新预热 页面,切换至 操作记录 页签,可查询刷新/预热任务是否执行成功。​
  • ​​​
  • 业务验证​
  • 向已完成刷新任务的 URL 发送 GET 请求,预期首次请求将调用 TOS 源站内容,后续请求将直接调用 CDN 缓存。​
  • 向已完成预热任务的 URL 发送 GET 请求,预期首次请求将命中 CDN 缓存。​
说明​
您可通过响应头中的 X-Bdcdn-Cache-Status 字段判断是否命中 CDN 缓存。​
  • X-Bdcdn-Cache-Status: TCP_HIT表示命中。​
  • X-Bdcdn-Cache-Status: TCP_MISS表示未命中。​
​
最近更新时间:2025.05.22 16:31:07
这个页面对您有帮助吗?
有用
有用
无用
无用