前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!

【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!

作者头像
Levir.CN
发布2018-06-20 17:29:58
2.2K0
发布2018-06-20 17:29:58
举报
文章被收录于专栏:前端笔记前端笔记

简单几步,利用Serverless,让COS中文件变更自动刷新CDN!

背景

这几天遇到这样的一个场景,相信也是大多数的站长会遇到的一个问题:

自己的一个个人站点使用了COS作为前端静态资源的存储(JS、CSS、图片等等),同时开启了CDN作为资源的加速分发,为了最大的达到加速效果,把这些资源的缓存时间设置30天及以上。某一天,自己的站点需要变更一下css样式,修改完之后扔到COS中,发现站点中的样式仍没有生效。最后想起是命中了CDN的缓存,因此需要到 CDN控制台 进行URL刷新。

现状

目前COS(对象存储)控制台是没有提供这样一个功能:当启用了CDN,COS中文件变更时(上传、删除)自动去刷新CDN的选项。

分析

马云说:世界是由懒人创造的。

上面提到的刷新的工作,一次还好,但每次更新站点的静态文件都需要去执行这样的操作,这样重复性的功能是一定要得到解决的,谁让我懒…

想了下,COS文件变更的场景分为 2 种:

  • API上传
  • GUI上传(控制台、COS Browser…)

要实现自动刷新CDN,则需要用到CDN的 刷新URL的API

API上传

如果你是在代码里去上传静态资源的,那么你是能够知道文件上传的时刻的,在文件传完后去调用CDN的API则完成工作。

但是,如果你也同时通过COS控制台来上传文件,那这样的场景则覆盖不了,因此这种做法并不全面。在此也不做多的描述了。

GUI上传

首先,会遇到一个难题,COS本身没有提供设置文件更变之后的回调的功能,如果能拿到这个的回调,则不管是通过什么方式的上传,均能被覆盖到。

既然写了这篇东西,也不卖关子了,直接介绍下我们的主角:SCF(无服务器云函数),简单说,SCF能实现事件式的触发,让你的一段代码跑在云上,无需自己去搭建服务器。而这里我们要利用他很重要的一个能力:COS文件上传/删除的触发器。

下面我们就一步步来实现我们要的功能:

注意: 地域需要选择与COS中存放静态资源的Bucket同个地域的,这里以我广州的 Bucket 为例,创建广州的函数

《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》
《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》

起个名字叫 cdn_refresh, 环境的话,我选择 Nodejs(这里推荐大家选 Nodejs 就行,因为我的这段demo是用的node,你需要使用的话,不懂node也没关系,改一下配置就行)

《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》
《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》
  • 2、修改 demo 配置

下载我这个 demo的代码,解压后修改里面的几个配置信息,包括secretId、secretKey、以及你的cdn域名

《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》
《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》

把写好的代码压缩成 zip 包,通过本地上传 zip 包选项传上去,执行方法不用修改

《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》
《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》
  • 3、添加触发方式,完成创建

选择 COS 触发,Bucket选择静态资源存储的bucket,事件类型我们选择文件上传,点击保存,完成函数创建

《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》
《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》
  • 4、再次添加文件删除的触发方式,完成配置

上面我们支持了文件上传的触发方式,这里再添加上文件删除的触发,这样才是完整的文件变更

《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》
《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》
《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》
《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》

测试效果

以上,我们就完成了 SCF 侧函数的配置,那下面我们直接看效果就行

我在控制台上传了文件 nba.jpg

《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》
《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》

我们在 SCF 控制台能看到调用相关的日志

《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》
《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》

最后,因为 CDN刷新是异步刷新,我们可以去 CDN控制台 查看刷新记录

《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》
《【利用无服务器云函数(SCF)】自动刷新COS中变更文件的CDN!》
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年5月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简单几步,利用Serverless,让COS中文件变更自动刷新CDN!
  • 背景
  • 现状
  • 分析
    • API上传
      • GUI上传
        • 测试效果
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档