边缘计算的使用非常简单,只需要编写好函数,然后指定执行函数的url就可以了。
1、添加函数
在云加速管理控制台,可以点击“我的函数”进入边缘计算函数列表。
点击「添加」按钮,在弹窗中输入函数名称后,「确定」保存,函数就添加好了。
点击具体函数的「编辑」按钮,即可对函数进行边修改和测试。
在函数编辑页面中,左侧为函数编辑器,可以编写函数,带有语法高亮、语法检查等功能;左侧下方有“回滚”、“保存”、“发布”三个按钮
回滚:会将编辑中的函数回滚到已发布的最新函数;
保存:会将当前编辑器中的函数进行保存,保存后的函数才能在预览和测试中使用;
发布:会将编辑中的函数部署到节点,在实际访问时生效,未绑定规则的函数无法进行发布。
在右侧预览页面,可以在地址栏里填入希望测试的域名,并点击“刷新”按钮测试函数运行情况,右侧下方的开发工具,可以在测试中帮助调试函数。
同时,函数还支持指定 method、scheme、headers以及body等参数进行测试,点击「测试」选项卡即可查看并编辑测试内容。此处还支持将测试参数保存为模板,方便下次测试使用。
2、绑定触发规则
编写完函数后,需要将函数和指定的URL进行绑定,当请求URL与规则匹配时,则绑定的函数将被触发执行。
触发规则依赖于URL,因此需要在具体的域名下添加。添加位置:“我的网站 -> 域名 -> 边缘计算”
点击「添加」按钮,输入指定的 URL 并选择要绑定的函数即可。
触发规则支持添加多条,以适应不同业务的处理需求。每条规则也可以根据实际需要进行开启或关闭。
URL 匹配规则说明:
规则绑定形如: https://.example.com/images/
一般规则:
- 规则里必须包含域名,如example.com/1.jpg。
- 规则里不能包含参数,如example.com/?anything是不合法的。
- 规则中如果不包含协议,则会匹配http和https;如果指定协议,则只匹配指定的协议。如www.example.com/会同时匹配https://www.example.com/和http://www.example.com/,https://www.example.com/只匹配https://www.example.com/而不会匹配http://www.example.com/。
关于通配符「*」:
- 仅支持通配符,代表0个或多个任意字符。
- * 不能用于中缀或参数的匹配,如example.com/*.jpg或example.com/?foo=*都是不合法的。
- 多条规则都匹配时,优先匹配更精确的规则,如www.example.com/的匹配优先级高于.example.com/*。
- * 匹配前缀时,example.com/会同时匹配https://example.com/和https://www.example.com/;.example.com/只会匹配https://www.example.com/而不匹配https://example.com/。
- * 匹配后缀时,https://example.com/path*,会同时匹配https://example.com/path2和https://example.com/path/readme.txt;https://example.com/path/*,则只匹配https://example.com/path/readme.txt而不匹配https://example.com/path2。
3、开发工具
如果在开发过程中需要调试Workers脚本,可以使用预览面板底部的开发人员工具。Workers预览的开发人员工具与Chrome或Firefox中的开发人员工具类似。
Console 在代码中输出console.log()时,可以在console标签中看到输出的内容。
Source 可以查看运行的代码内容。
Network 显示在代码中发出的请求详细信息。
4、请求缓存
在使用边缘计算时,如果需要对请求进行缓存,可以使用以下两种方式:
4.1、fetch()获取url内容时,如果url接入了云加速,那么请求会按照云加速中配置的CDN缓存策略,对请求的内容进行缓存。但是此时,尽管对于url的请求无需返回源站,但是仍然要请求到云加速的节点。
4.2、使用caches,边缘计算提供了caches。该caches可以在request发出前进行检查,如果该request在caches中,则无需发送请求,直接返回caches中缓存的response。
-- caches.default
let cache = caches.default
-- put
cache.put(request, response)
request: 可以是string或Request对象。
response: 需要缓存的Response对象。
-- match
cache.match(request)
request: 可以是string或Request对象。
如果缓存中存在该request,则返回已缓存的Response对象。
-- delete
cache.delete(request)
request: 可以是string或Request对象。