专栏首页用户5909132的专栏使用 SCF 自动刷新被 CDN 缓存的 COS 资源

使用 SCF 自动刷新被 CDN 缓存的 COS 资源

本实践将引导您在使用腾讯云对象存储 COS 上传对象时,借助云函数 SCF 实现自动刷新在 CDN 上指定的缓存文件,让其自动获取到更新后的资源。

注意:使用此功能将遵循 CDN 相关 API 调用次数的限制。

实践背景

当静态内容需要更新时,通常会往 COS 覆盖上传一个更新版本的资源或删除该资源。

若您配置的 CDN 缓存过期时间较长,则 CDN 的某些边缘节点可能会仍然缓存旧资源;缓存过期时间太短,则会影响到加速的效果。

根据上述情况,您需要使用 CDN 控制台上的 缓存刷新 功能,对指定 URL 进行手动刷新操作,实现删除无效缓存文件或者更新资源。

本文将结合 COS 和 SCF 的功能特性,在 COS 文件更新时,实现自动刷新 CDN 缓存的效果。

前提条件

  1. 腾讯云账户,需具备 COS、CDN、SCF 等产品的访问权限。
  2. 创建存储桶,并在该存储桶上绑定了 CDN 加速域名。
  3. 确保 COS 的存储桶的所属地域支持 SCF 产品功能,暂不支持跨地域调用。
  4. 准备好可调用 CDN 刷新接口的云 API 密钥,以及下载 SCF 刷新 CDN 示例代码。

实践步骤

本实践案例以 Node.js 语言示例代码为例。请按照以下步骤进行实践:创建 SCF 函数 > 配置函数 > 测试

一、创建 SCF 函数

注意:您创建的函数所属地域需与 COS 存储桶的地域保持一致。

  1. 登录 SCF 控制台,在左侧导航菜单中,单击【函数服务】。
  2. 选择与静态内容相同的地域,单击【新建】创建函数。
  3. 在 “新建函数” 页面,选择 “空白函数”,输入函数名称(如 refresh_cdn),设置运行环境(示例代码使用 Node.js 语言,因此运行环境设置为 Nodejs 6.10),如下图所示:
  1. 确认配置无误后,选择【下一步】>【完成】,即可创建 SCF 函数。

二、配置函数

空白函数创建完成后,需添加对应的函数代码,并设定触发方式,使函数可以正常工作。

1. 配置函数代码

  1. 下载 SCF 刷新 CDN 示例代码(链接地址:https://main.qcloudimg.com/raw/812a50878585ee2c04a74112434f2da2/scf_about_cdn_refresh.zip)。
  2. 解压所有文件,找到其中的 index.js 文件并打开。
  3. 在代码里修改替换成您的具备调用 CDN 刷新接口权限的 SecretId、SecretKey 和需要刷新的域名。如下图所示:
  1. 如需调用刷新绑定在腾讯云海外 CDN 上的域名,请将代码中的RefreshCdnUrl修改为RefreshCdnOverSeaUrl

2. 上传函数代码

  1. 将修改好的代码和其他文件重新压缩打包为 zip 格式。
  2. 在 SCF 控制台 中,选择【函数代码】页签,将 "提交方法" 设置为 "本地上传 zip 包",单击【上传】,选择此压缩的 zip 格式文件。如下图所示:

3. 添加触发方式

  • 在 SCF 控制台 中,选择【触发方式】,单击【添加触发方式】。
  • 将“触发方式”设置为"COS 触发",并选择需刷新 COS 资源的存储桶,配置项说明如下:

COS Bucket:选择用作事件源的 COS 存储桶,该存储桶必须位于函数所在地域。

事件类型:选择COS Bucket在哪种条件下触发函数。对于每个 COS Bucket,一种事件类型只能设置一次。

  • 如果您仅需要自动刷新 CDN 访问覆盖上传到 COS 的对象,则需将 "事件类型" 设置为上传操作,如 PUT 方法创建、POST 方法创建等。
  • 如果您同时需要对删除行为也进行自动刷新,则需再添加一种触发方式,并将 "事件类型" 设置为 "删除文件"。

前缀过滤:前缀过滤通常用于过滤指定目录下的文件事件,例如前缀过滤为test/,则仅test/目录下的文件事件才可以触发函数,hello/目录下的文件事件不应该触发函数。

后缀过滤:后缀过滤通常用于过滤指定类型或后缀的文件事件,例如后缀过滤为.jpg,则仅.jpg结尾的文件的事件才可以触发函数,.png结尾的文件不应该触发函数。

  • 勾选立即启用。
  • 确认配置信息无误后,单击【保存】。

三、测试

注意:由于 CDN 是异步操作,查询操作时,请稍等片刻。

完成配置后,可在对应存储桶中上传一个相同对象键的新文件进行验证。

  1. 登录 COS 控制台,上传一个相同对象键的新文件。
  2. 完成上传后,登录 SCF 控制台,选择【函数服务】>【函数名称】> 【运行日志】,可查询到调用成功的日志。
  3. 登录 CDN 控制台,选择【缓存刷新】>【操作记录】,可查询到自动调用刷新的记录。
  4. 以上测试通过后,即可访问 CDN 加速后的 URL 获取到最新的资源。

本文分享自微信公众号 - 腾讯云存储(TencentCloud_COS),作者:COS团队

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用COS和SCF玩转人脸识别

    如果用"云"上的话,就是用云的概念解释,腾讯云对象存储提供的是面向非结构化数据,支持HTTP和HTTPS协议访问的分布式存储服务,它能容纳海量数据并保证用户对带...

    云存储
  • 腾讯云对象存储 COS 高可用解决方案,都在这里了!

    上一篇内容我们说到了 COS 是什么“要对象存储做什么,我有女朋友就够了!”的文章。本文将着重介绍如何尽可能的提高腾讯云对象存储 COS 的可用性。

    云存储
  • 数据不再玩失踪?COS实用案例之“备份”

    一周前,一位刚刚投身教育事业的朋友半夜发朋友圈哭诉到,因为笔记本突发故障,辛苦准备了一个月的教案,全部化为乌有,又要重新“历劫”了。

    云存储
  • 面向对象与函数式编程的简单案例

    还有支持多种范式的语言,例如 JavaScript,你可以用 JavaScript 编写面向对象的代码或函数式代码,甚至可以将两者混合。

    疯狂的技术宅
  • JavaScript的语法

    JavaScript作为一门语言,本身有属于自己的语法,词法,句法的而要求,并且和Java等高级编程一样,也有属于自己的流程控制等操作。

    小小鱼儿小小林
  • Netty 模拟百万连接

      我们知道单机的端口最多65536,除去系统使用的端口, 留给程序使用的也就6万个端口, 在需要对单机做长连接压力测试的时候,如果要测60W的长连接并发,就得...

    良辰美景TT
  • 多方位测试一下for循环不同写法的性能差别

    何处锦绣不灰堆
  • 半自动化运维之动态添加数据文件(二) (r5笔记第56天)

    接着上一篇的内容:半自动化运维之动态添加数据文件(一) (r5笔记第55天) 我们可以通过监控表空间的情况,然后映射匹配文件系统中的挂载点情况,通过随机函数在各...

    jeanron100
  • 数据中心国标B级与Uptime Tier III等级的级别对比-孙长青

    孙长青,注册暖通工程师,高级工程师,规划设计部总工程师,IDC单位设计总监等,有多年从事数据中心规划设计、咨询顾问、甲方自建设计部等全过程的实战经验,对数据中心...

    数据中心DATACenter_PUE-POE
  • Split原来是这样用的

    sql的思路呢,就是需要先进行split,然后用length 加上 substr来控制首段的位数,来进行截取输出。

    DataScience

扫码关注云+社区

领取腾讯云代金券