一、背景介绍
若你的源站为腾讯云对象存储 COS,当源站有同名文件更新或者违规资源需要删除时,通常需要同步将资源从 EdgeOne 节点删除,避免用户仍访问到旧的资源或者违规内容。但是清除缓存需要你在 COS 上更新或删除文件后,人工进入 EdgeOne 控制台或者调用 API 接口提交需清除缓存的 URL,该方式容易遗漏且可能因为人工操作延迟造成未及时执行清除动作。
自动清除缓存可以帮助你在文件上传至腾讯云 COS 后,由腾讯云 SCF 自动检测并调用 EdgeOne 的清除缓存 API 接口自动完成节点的缓存清除,保障你的文件更新或删除后,用户可立即访问到最新的资源,提升用户体验。
二、适用场景
场景1:同名文件更新
文件上传至腾讯云 COS 后,由于文件内容有更新,重新上传同名文件至 COS,在 CDN 缓存过期前,希望用户可以立即访问到最新的资源。
场景2:违规文件删除
上传至 COS 的文件,可能存在内容不合规等问题需要将该文件从 COS 存储桶中删除,在 CDN 缓存过期前,希望用户不再能访问到该资源。
三、示例场景
假设你是一家游戏厂商,已将站点域名 www.example.com 接入到 EdgeOne 加速,源站为腾讯云 COS,地址为:purge-cos-1251558888.cos.ap-guangzhou.myqcloud.com 。因为有多款游戏 APK 需要经常更新,期望文件变更时即可自动清除 EdgeOne 节点的缓存。
四、准备工作
1. 已开通 对象存储 COS 和 云函数 SCF,记录该存储桶名称及地域信息。
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 节点清除,用户请求时会回源拉取最新资源。
七、监控告警(建议)
EdgeOne 对于清除缓存任务会设置配额限制,具体配额请参见 套餐选型对比。
对于超过配额上限的清除缓存任务,在调用清除缓存 API 接口时会触发报错,最终云函数的执行状态为“调用失败”,为了及时关注到该问题,建议你通过腾讯云可观测平台配置云函数的监控告警。配置方法请参见 云函数配置告警、云函数监控指标说明。