本文主要介绍了如何通过腾讯云对象存储(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.myzijiebao.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.myzijiebao.com。
其余配置项保持为默认配置即可。
4. 单击完成,即可完成 EdgeOne 自动预热函数的创建。
步骤2:验证生效
1. 登录 对象存储 COS 控制台,在左侧菜单栏中,单击存储桶列表。
2. 在存储桶列表页面,单击用于存储 APK 母包的存储桶名称。
3. 在文件列表页面,进入 prefetch-cos-1251558888.cos.ap-guangzhou.myzijiebao.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,则表示资源已提前自动预热到边缘节点,即已实现首次访问也可以命中缓存。