Skip to content

2.0.10

Choose a tag to compare

@imaegoo imaegoo released this 28 Sep 03:22
58b882c

修复

  • 腾讯云 CloudBase 冷调用慢、发评论超时(#1189):适配器把重依赖的首次加载放在了调用路径里 —— @cloudbase/node-sdk(468 KB)在 getApp() 中 await import(),jsdom(4.2 MB,发评论时做 XSS 消毒)经 getDomPurify() 懒加载。而 CloudBase 免费体验版的云函数执行超时固定 3 秒且不可修改,这两笔开销直接吃光预算:冷实例发评论必然超时,且评论根本不会入库。

    真机实测(控制台事件探针):

    项 修复前 修复后
    GET_FUNC_VERSION 冷调用 2477 ms 222 ms
    COMMENT_SUBMIT 冷实例 3000ms 超时(评论未入库) 1078 ms 成功(返回评论 id)
    COMMENT_SUBMIT 热实例 — 454 / 714 / 1933 ms(4 次全成功)

    做法:@cloudbase/node-sdk 改为模块顶层静态 import、app 单例在模块初始化阶段构造;新增 packages/server-cloudbase/src/prewarm.ts,在模块初始化阶段同步装好 DOMPurify 并用 setCustomLibs 注入(1.x lib.js 逃生舱范式)。必须是同步的 —— CJS 没有顶层 await,模块顶层的浮空 Promise 与首次调用是竞态,首次请求照样超时。

    代价:冷启动 InitFunction 约 0.6s → 3.6s(平台接受,不卡)、常驻内存 +约 36MB。

    验证边界:以上数据来自控制台「测试」面板直调云函数,浏览器 → HTTP 网关 → 权限控制 这条真实站点链路尚未复测,进程见 #1183。

  • 通知可能被提前结束的后置任务丢掉(#1190):@twikoojs/common 原先不等待所有通知完成就结束收尾,现改为等待全部通知完成,含对应测试。

  • Cloudflare Workers 接 MongoDB 时显式空属地未保留(#1190):显式的空属地会被当成「未设置」而重新解析,现已保留原语义。

新增

  • Cloudflare Workers 支持 MongoDB、SMTP 与真实内容处理依赖(#1190):此前该适配器只能用平台自带 KV、邮件也仅限有限通道;现在可外接 MongoDB 作为数据库、可用 SMTP 发信,并支持真实的内容处理依赖。注意 @twikoojs/cloudflare 不经 npm 发布,按仓库源码用 wrangler 部署,详见文档。

文档

  • CloudBase 部署章节按真机复核结果修正(#1189):
    • 需要付费套餐:免费体验版无法使用「HTTP 网关 - 跨域设置 - 添加跨域域名」,而「自定义域名」是付费套餐权益(个人版 1 个 / 标准版 5 个),升级到个人版即可
    • 运行环境保持模板默认的 Node.js 20.19:实测 24.11(公测中)无法完成在线安装依赖,函数创建会失败([ResourceNotFound.Package] BuildCodeViaSCF Failed resp:null: Dependency error,且函数代码为空);18.15 不满足 html-to-text 等依赖
    • 「权限控制」入口改为控制台实际路径(「鉴权设置」右边的「⋮」→「权限控制(legacy)」)
  • 补上 AGENTS.md 目录对照表遗漏的 Cloudflare 与 EdgeOne Makers(#1188)

Full Changelog: 2.0.9...2.0.10