用户之声——提建议·赢好礼> HOT
本文主要介绍了如何通过腾讯云对象存储(Cloud Object Storage,COS)云函数服务(Serverless Cloud Function,SCF)实现 EdgeOne 自动预热资源,预热的功能和原理介绍请参考 预热缓存




背景介绍

若您的源站为腾讯云对象存储 COS,当源站上传新的热点资源后(例如:APK 安装包、热点视频、课程文件等),通常需通过预热缓存来将资源提前缓存至 EdgeOne 边缘节点,避免客户端首次请求时因节点未缓存资源导致请求回源的情况。但是预热缓存需要您在文件上传到腾讯云 COS 后,人工到 EdgeOne 控制台内提交需预热的 URL,在需预热的 URL 数量很多的情况下,容易遗漏且可能因为人工操作造成未及时预热。

自动预热可以帮助您在文件上传至腾讯云 COS 后,由腾讯云 SCF 自动检测并调用 EdgeOne 的缓存预热 API 接口自动完成文件预热,保证您的文件在上传后立即预热至 EdgeOne 节点,提高缓存命中率,降低回源请求量。
注意:
腾讯云对象存储 COS 为收费功能,使用中可能产生的费用由腾讯云 COS 收取,具体收费详情请参考对象存储计费概述
云函数 SCF 为收费功能,使用中可能产生的费用由云函数 SCF 收取,具体收费详情请参考云函数计费概述
每日预热数量具有限额,不同计费套餐有不同限额,详见 套餐选型对比

适用场景

场景1:发布新内容
新版本的安装包或升级包上传至腾讯云 COS 后,资源自动预热至 EdgeOne 加速节点。文件正式发布后,海量用户的下载请求将直接由加速节点响应,提升下载速度的同时,大幅度降低源站压力。
场景2:大型运营活动
运营活动发布前,提前将活动页涉及到的静态资源上传到对象存储 COS,资源自动预热至 EdgeOne 加速节点。活动开始后,用户访问的静态资源均由加速节点响应,降低因高流量导致的延迟和拥塞。

操作步骤

示例场景

假设您是一家游戏厂商,已将站点域名 www.example.com 接入到 EdgeOne 加速,源站为腾讯云 COS,地址为:prefetch-cos-1251558888.cos.ap-guangzhou.myqcloud.com 。因为有多款游戏 APK 需要经常更新,期望上传 APK 后即可自动将资源预热至 EdgeOne 边缘节点。

准备工作

1. 已开通 对象存储 COS云函数 SCF,记录该存储桶名称及地域信息。
2. 根据 站点接入 指引添加站点,购买 EdgeOne 套餐,并获取该站点 ID。站点 ID 可通过站点接入后,在站点列表内查看并复制,例如:zone-26v607hq8d3m。

3. 已在 EdgeOne 控制台添加加速域名 www.example.com,且源站配置为腾讯云 COS。

步骤1:创建 EdgeOne 自动预热的云函数并部署

1. 登录 云函数服务控制台,在左侧菜单栏中,单击函数服务。
2. 在函数服务页面,单击新建,选择使用模板创建,在模糊搜索中输入 EdgeOne 自动预热并选中,单击下一步

3. 在“函数配置”页面,如下配置为必填项,其他配置项建议保持使用默认配置即可。
基础配置
函数名称:创建函数时将自动生成一个函数名称,您可以选择自定义修改为一个易识别的函数名称。
地域:请选择对象存储桶 COS 的所在地域,例如:广州。
描述:说明此函数的用途,如:本示例使用 COS 作为触发器,如 COS 文件上传时,触发云函数执行完成 EdgeOne 自动化预热文件到边缘节点。
运行角色:默认勾选启用,配置并使用 SCF 模板运行角色。如使用已有角色,请确保已有角色已包含 QcloudCOSFullAccess 和 QcloudTEOFullAccess 的预设策略。

函数代码:模板已内置默认函数代码实现 EdgeOne 自动预热能力,无需改动。
环境配置:
单击高级配置,选中环境配置,您需要在环境变量中添加以下 key 和对应的 value 值,其余配置保持默认即可:
ZoneId:请填写对应需进行自动预热的域名站点 example.com 的 ZoneId,站点 ID 获取方式请参见 准备工作
eoDomains:请填写已在 ZoneId 下添加好的加速域名,如:www.example.com



说明:
如果您在当前站点下有多个域名的源站使用了同一个 COS 存储桶,期望多个域名都能触发自动预热,则填写环境配置时,可以填写添加多个环境变量,以 eoDomains 开头,例如:eoDomains_1、eoDomains_2,如下所示:



触发器配置
在触发器配置中,选择 COS Bucket 为与此云函数 SCF 同地域的存储桶,可输入存储桶名称进行模糊查询,例如:prefetch-cos-1251558888.cos.ap-guangzhou.myqcloud.com。其余配置项保持为默认配置即可。

4. 单击完成,即可完成 EdgeOne 自动预热函数的创建。

步骤2:验证生效

1. 登录 对象存储 COS 控制台,在左侧菜单栏中,单击存储桶列表。
2. 在存储桶列表页面,单击用于存储 APK 母包存储桶名称
3. 在文件列表页面,进入 prefetch-cos-1251558888.cos.ap-guangzhou.myqcloud.com 根目录。
4. 单击上传文件,首次上传一个文件,例如:v2_src.apk,单击上传

5. 文件上传成功后,在 云函数 SCF 控制台 中,单击 步骤1 创建的函数名称
6. 在函数管理页面,选择触发管理 > 日志查询 > 调用日志,通过调用日志获取到函数执行的日志信息,当显示调用成功,且日志内 key 信息与刚才上传的文件名称一致,则表示文件上传到 COS 已触发云函数 SCF 调用 EdgeOne 缓存预热 API 成功。

7. 前往 边缘安全加速平台 EO 控制台,进入当前站点 example.com 后,单击站点加速 > 预热缓存。
8. 在预热缓存页面,单击历史记录,查看预热结果是否成功,如显示预热成功,表明当前已完成预热。

9. 在浏览器打开开发者工具后,输入该文件的访问路径访问,例如:www.example.com/v2_src.apk。查看响应头内的 EO-Cache-Status 值。如未预热资源,首次访问资源时将显示为 MISS,下图显示为 HIT,则表示资源已提前自动预热到边缘节点,即已实现首次访问也可以命中缓存。