EdgeOne 自动清除缓存
本文主要介绍了如何通过腾讯云 对象存储(Cloud Object Storage,COS)和 云函数服务(Serverless Cloud Function,SCF)实现 EdgeOne 自动清除缓存,清除缓存的功能和原理介绍请参考 清除缓存。
背景介绍
若您的源站为腾讯云对象存储 COS,当源站有同名文件更新或者违规资源需要删除时,通常需要同步将资源从 EdgeOne 节点删除,避免用户仍访问到旧的资源或者违规内容。但是清除缓存需要您在 COS 上更新或删除文件后,人工进入 EdgeOne 控制台或者调用 API 接口提交需清除缓存的 URL,该方式容易遗漏且可能因为人工操作延迟造成未及时执行清除动作。
自动清除缓存可以帮助您在文件上传至腾讯云 COS 后,由腾讯云 SCF 自动检测并调用 EdgeOne 的清除缓存 API 接口自动完成节点的缓存清除,保障您的文件更新或删除后,用户可立即访问到最新的资源,提升用户体验。
注意:
腾讯云对象存储 COS 为收费功能,使用中可能产生的费用由腾讯云 COS 收取,具体收费详情请参考对象存储计费概述。
云函数 SCF 为收费功能,使用中可能产生的费用由云函数 SCF 收取,具体收费详情请参考云函数计费概述。
适用场景
场景1:同名文件更新
文件上传至腾讯云 COS 后,由于文件内容有更新,重新上传同名文件至 COS,在 CDN 缓存过期前,希望用户可以立即访问到最新的资源。
场景2:违规文件删除
上传至 COS 的文件,可能存在内容不合规等问题需要将该文件从 COS 存储桶中删除,在 CDN 缓存过期前,希望用户不再能访问到该资源。
操作步骤
示例场景
假设您是一家游戏厂商,已将站点域名
www.example.com
接入到 EdgeOne 加速,源站为腾讯云 COS,地址为:purge-cos-1251558888.cos.ap-guangzhou.myqcloud.com
。因为有多款游戏 APK 需要经常更新,期望文件变更时即可自动清除 EdgeOne 节点的缓存。准备工作
2. 根据 站点接入 指引添加站点,购买 EdgeOne 套餐,并获取该站点 ID。站点 ID 可通过站点接入后,在站点列表内查看并复制,例如:zone-26v607hq8d3m。
3. 已在 EdgeOne 控制台添加加速域名
www.example.com
,且源站配置为腾讯云 COS。步骤1:创建 EdgeOne 自动清除缓存的云函数并部署
1. 登录 云函数服务控制台,在左侧菜单栏中,单击函数服务。
2. 在函数服务页面,单击新建,选择使用模板创建,在模糊搜索输入框中输入 EdgeOne 自动清除缓存并选中,单击下一步。
3. 在“函数配置”页面,如下配置为必填项,其他配置项建议保持使用默认配置即可。
基础配置
函数名称:创建函数时将自动生成一个函数名称,您可以选择自定义修改为一个易识别的函数名称。
地域:请选择对象存储桶 COS 的所在地域,例如:广州。
时区:云函数内默认使用 UTC 时间,您可以通过配置环境变量 TZ 修改。在您选择时区后,将自动添加对应时区的 TZ 环境变量。
函数代码:模板已内置默认函数代码实现 EdgeOne 自动清除缓存的能力,无需改动。
高级配置:
单击高级配置,找到环境配置,您需要在环境变量中添加以下 key 和对应的 value 值,其余配置保持默认即可:
ZoneId:请填写对应需进行自动清除缓存的域名站点
example.com
的 ZoneId,站点 ID 获取方式请参见 准备工作。eoDomains:请填写已在 ZoneId 下添加好的加速域名,如:
www.example.com
。
说明:
如果您在当前站点下有多个域名的源站使用了同一个 COS 存储桶,期望多个域名都能触发自动清除缓存,则填写环境配置时,可以填写添加多个环境变量,以 eoDomains 开头,例如:eoDomains_1、eoDomains_2,如下所示:
权限配置:运行角色勾选启用,通过下拉框选择运行角色(请确保已有角色已包含 QcloudCOSFullAccess 和 QcloudTEOFullAccess 的预设策略),否则请新建运行角色。
触发器配置
以事件类型为
全部创建
为例(若需要创建全部删除
事件类型,参照配置即可),在触发器配置中,选择自定义创建,COS Bucket 为与此云函数 SCF 同地域的存储桶,可输入存储桶名称进行模糊查询,例如:purge-cos-1251558888.cos.ap-guangzhou.myqcloud.com。
其余配置项保持为默认配置即可。
4. 单击完成,即可完成 EdgeOne 自动清除缓存函数的创建。
步骤2:验证生效
1. 登录 对象存储 COS 控制台,在左侧菜单栏中,单击存储桶列表。
2. 在存储桶列表页面,单击用于存储 APK 母包的存储桶名称。
3. 在文件列表页面,进入
purge-cos-1251558888.cos.ap-guangzhou.myqcloud.com
根目录。4. 单击上传文件,上传一个同名文件,例如:v2_src.apk,单击上传。
5. 文件上传成功后,在 云函数 SCF 控制台 中,单击 步骤1 创建的函数名称。
6. 在函数管理页面,选择日志查询 > 调用日志,通过调用日志获取到函数执行的日志信息,当显示调用成功,且日志内 key 信息与刚才上传的文件名称一致,则表示文件上传到 COS 已触发云函数 SCF 调用 EdgeOne 清除缓存 API 成功。
7. 前往 边缘安全加速平台 EO 控制台,在一级导航的工具集中单击清除缓存。
8. 在清除缓存页面,单击历史记录,查清除任务是否成功,如显示清除成功,表明当前已完成清除。
9. 在浏览器打开开发者工具后,输入该文件的访问路径访问,例如:
www.example.com/v2_src.apk
。查看响应头内的 EO-Cache-Status 值。如未清除缓存,访问资源时会命中之前旧的缓存,下图显示为 MISS,则表示资源已从 EdgeOne 节点清除,用户请求时会回源拉取最新资源。