GoForum🌐 V2EX

腾讯云 EdgeOne Pages 边缘函数的踩坑体验

AkinoKaedeChan · 2026-01-20 10:11 · 0 次点赞 · 0 条回复

起因

前些时间整了个备案域名,就想着把一些自建服务迁移回国内,原本我的 Bark 服务器是放在 Cloudflare Workers 上的,于是就想着看看能不能迁移到国内公有云的 Serverless 平台上。

选择 EdgeOne Pages 的原因也很简单,想着也许能够免费用,于是就遇到第一个问题:

问题

问题 1:文档没有描述 KV 的计费规则

我打开腾讯云的文档竟然发现完全没有描述 Pages KV 的计费规则,于是我提出售前工单询问计费规则,客服回复让我加微信群问技术支持……所以这个工单系统的作用是什么,电话总机吗?无奈还是加群问了下,技术支持表示是免费的。就算免费也得写一下吧……那好吧就用这个了,毕竟好像找不到第二个免费的……

问题 2: CLI 中环境变量不能设置为 0

设置环境变量为 0 表示禁用应该是挺常见的用法,一开始设置为 0 不行觉得可能是 JavaScript 0 == “ 的问题(后面一想那参数肯定是字符串啊),于是就试着设置成 “0”,还是不行。在网页试了下可以设置,不过难道把环境变量设置为空字符串又是什么禁忌吗?

> npx edgeone pages env set EXAMPLE_KEY 0
[cli][✘] Variable name and value cannot be empty.
> npx edgeone pages env set EXAMPLE_KEY ""
[cli][✘] Variable name and value cannot be empty.
> npx edgeone pages env set EXAMPLE_KEY "0"
[cli][✘] Variable name and value cannot be empty.

问题 3:启动开发环境次数有日限

这个文档里写了,但是没写能开多少次,我这边大概不到 20 次就触发日限额了(热重载不算,但是 Debug 的时候发现热重载不是很即时就反复开了下),只能等第二天。

这个开发环境似乎是远程在腾讯云那边起了三个 Worker ,而且对 KV 的读写会影响到生产环境(这要是真有人在重要生产环境用了怕不是会炸掉)……

问题 4:fetch() 不支持 HTTP/2

最后的推送代码写好的时候,发现请求 APNs 服务器的时候连接会被断开,研究半天发现是 EdgeOne Pages Edge Functions Runtime 的 fetch() 不支持 HTTP/2 ,而 api.push.apple.com 是强制使用 HTTP/2 的。我问了下腾讯的员工,说是在规划中,本来我想着可能我是第一个发现的文档没有提示也不奇怪,后面发现似乎我不是第一个问这个的……

本来觉得又白干一天了,突然想起这个 Edge Pages 还有个 Node Functions 用的是 Node.js Runtime ,于是拿 Node Functions 写了个代理就勉强能用了。开发的过程中发现 Edge Functions 的 Catch-all 路由优先级是高于 Node Functions 所有路由的,只好把 Edge Functions 移动到了一个单独的目录下,当然这文档也没说明。

总结

总而言之,头疼的体验主要来自文档不清晰,其次交流严重依赖 IM 而不是工单系统,最后是非常草台的设计。

0 条回复
添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: AkinoKaedeChan
发布: 2026-01-20
点赞: 0
回复: 0