Hasty Briefsbeta

双语

Binary Formats Are Better Than JSON in Browsers

a year ago
  • #binary-encoding
  • #web-development
  • #performance
  • JSON已不再是浏览器端Web应用的最快选择,对性能敏感的应用应考虑Avro、Protobuf或Bebop等替代方案
  • 浏览器二进制编码基准测试显示,包括MessagePack在内的许多JSON替代方案曾较慢,但近期发展已提升其性能
  • 常见基准测试误区包括使用Node.js而非真实浏览器环境,以及过度关注数值密集型数据集(不能反映典型的字符串应用场景)
  • 从服务器请求到客户端处理的端到端延迟测量,比单纯反序列化时间更能准确反映性能差异
  • 压缩虽能减小消息体积差异,但无法消除浏览器处理JSON所需的额外时间开销
  • Avro和Protobuf等基于模式的编码自带验证机制,在几乎不影响性能的前提下增加了安全性
  • Flatbuffers和Cap'n Proto等库的延迟解码技术(当无需访问全部数据时可提升性能)在完整对象实例化时可能更慢
  • 近期浏览器改进和库更新使二进制编码更具可行性,其中Bebop、Avro和Protobuf表现出色
  • JSON存在固有缺陷:字符串大小限制、缺乏类型支持(如64位整数)、无内置验证机制,易导致运行时错误
  • TypeScript和zod等库能缓解部分JSON问题,但基于模式的编码方案提供更完整的端到端安全保障