UNPKG和边缘脚本这两个技术都是利用cdn对文件进行转发,他们也有着不同,这也只是我浅显的理解,这这段时间的开发中进行了取舍,最终使用边缘脚本EdgeScript 进行了项目的开发,
下面分享下我的开发经历:
使用背景
在我入职公司之前就一直存在着这样的问题:
使用npm发布的组件库升级后,如何让产线自动引用最新的库?
这里采用的方式是组件库大发版,产线的项目也需要重新打包部署一遍,这样才能使用最新的功能。
在项目比较少的时候是可行的,但是随着项目的增多,就会带来特别多毫无意义的部署。所以通过调研,先后找到了unpkg 和 oss边缘脚本 这两个解决方案。
unpkg
unpkg 是什么
unpkg 是一个内容源自 npm 的全球快速 CDN。
注:它部署在 cloudflare上,在大陆地区访问到的是香港节点。
它支持 h/2 和很多新特性,如果不考虑网络延迟的原因,性能优化较为出色。在国内一些互联网公司也有镜像,例如知乎和饿了么。
它能以快速而简单的方式提供任意包、任意文件,通过类似这样的 URL :
unpkg.com/:package@:version/:file
使用体验
- 国外 CDN 对付国内用户,总是不够快,甚至随时可能被墙;
- 公司组件部署到三方cdn上存在风险
- unpkg 本地化之后过于中心话,会导致服务器压力过大,达不到预期的想法
所以最终放弃了这是方案。
最终我们的边缘脚本(EdgeScrip)登场了
Oss边缘脚本(EdgeScript)
初探
unpkg方案搁置之后,开始忙别的需求,使用到了oss进行cdn缓存文件,这个同时发现了边缘脚本这个概念
边缘脚本(EdgeScript,简称ES)是一个可供您快速实现CDN定制配置的工具箱,
当CDN控制台上的标准配置无法满足您的业务需求时,可以尝试使用边缘脚本简单编程实现。
运行原理
配置的边缘脚本规则与CDN控制台上的标准配置一样,都是对CDN请求进行处理。边缘脚本的执行位置如图所示,当客户端请求到达CDN节点后,CDN节点网关会根据您在控制台上设置的标准配置、边缘脚本规则对请求进行处理。以CDN控制台上的标准配置为参照物,边缘脚本可选择在请求处理的最前面或最后面生效。
执行位置与优先级
EdgeScript的执行位置与优先级如下:
- 执行位置 EdgeScript规则的执行位置为请求处理开始和请求处理结尾。
- 请求处理开始:常用应用场景为一次鉴权、拦截、限速等。
- 请求处理结束:常用应用场景为缓存设置、回源鉴权、AB测试等。
- 优先级 处于同一执行位置的多条规则,可以通过选择优先级,决定其先后执行顺序。
通过CLI工具使用边缘脚本
我这里将cli工具集成到了node项目中,在使用python脚本直接上传es规则,这样就可以做到组件发版,一键同步es转发规则。就能完美解决现在的问题。效果图如下:
实现的效果
- 在输入url,他会通过自定义的ES规则进行302转发到链接 3
- 我们可以设置他的强制缓存,我这里设置了120s
- 302重定向到最新的链接