Cap'n Proto 事件循环友好吗?

这是Happy Little Monoliths(第 6 章)的摘录,包含 Fastify 示例的源代码这里

  • Cap’n Proto 介绍:是 Kenton Varda 开发的精简快速数据交换格式,现广泛用于 Cloudflare,其需预编译模式才能工作,理论上解析时间更快,因为无需解析,数据按需提取。
  • 简单示例

    • 生成 Cap’n Proto 模式:使用cat basic.json | npx capnp-schema-gen Basic > basic.capnp从 JSON 文件生成模式。
    • 编译模式类:通过npx capnp-es -ojs basic.capnp编译模式类。
    • 示例代码在examples/6/basic-capnp
  • 发送 Cap’n Proto 数据

    • 创建简单 UI 按钮,通过fetch发送数据到服务器,使用toArrayBuffer()toPackedArrayBuffer()将数据转换为缓冲区。
  • 接收 Cap’n Proto 数据:添加/encode端点,使用Basic模式类解码消息,不确定官方 MIME 类型,可使用application/x-capnpapplication/octet-stream,示例在examples/6/fastify-capnp
  • 性能测试

    • 生成 46kb 的 JSON 文件news.json,并转换为 Cap’n Proto 模式和消息。
    • 创建服务器测试解码 JSON 和 Cap’n Proto 消息的性能,对于仅访问date字段,Cap’n Proto 比 JSON 快 100%以上,但访问所有字段时,JSON 性能更好,原因是 Cap’n Proto 每次访问字段都需调用特定函数。
    • 对于处理大型数据负载,Cap’n Proto 在延迟处理方面有优势,仅在减少负载大小方面有益,还可用于超大负载或部分访问数据的情况,其他情况使用 JSON 和application/x-www-form-urlencoded
  • 注意事项

    • 属性名不能有下划线。
    • Text字段限制为 512mb。
    • capnp-es仍处于 alpha 阶段,但测试中较稳定。特别感谢[Matteo Collina]帮忙调查。
阅读 6
0 条评论