跳到正文
BCBinary Code Translator
菜单
返回博客
最佳实践

什么时候该用 Base64,什么时候不该用?

了解 Base64 适合用在哪些真实场景、会带来多少体积开销、对缓存和性能有什么影响,以及什么时候应改用文件链接、对象存储或更安全的传输方案。

1 分钟阅读
作者 Binary Code Translator
#base64#encoding#api#performance#security

Base64使用场景

Base64 在现代软件中随处可见。这并不意味着它总是正确的选择。

Base64 的实际用途

Base64 将二进制数据转换为文本安全字符。这是编码,而不是加密。

重要的:

  • 任何人都可以解码 Base64。
  • 它增加了大小开销(约 33%)。

好的用例

  1. 在 JSON 中嵌入小的二进制片段。
  2. 通过纯文本通道移动字节。
  3. 非常小的资源的数据 URI 预览。
  4. 与明确需要 Base64 的 API 进行互操作。

糟糕的用例

  1. 数据库文本列中的大文件存储。
  2. 性能敏感的有效负载,其中大小很重要。
  3. 任何人们期望“安全”的地方。
  4. 替换适当的对象存储/CDN 工作流程。

性能现实

如果您的原始有效负载是 N,则 Base64 输出约为 4/3 * N

您还需要支付编码/解码的 CPU 成本以及客户端的内存开销。

安全说明

Base64 不是锁。它只是一种格式。

如果您需要安全:

  • 在传输过程中使用 TLS。
  • 使用静态数据加密。
  • 在完整性很重要的情况下使用签名令牌。

实用经验法则

当互操作性是主要要求且有效负载适中时,请使用 Base64。

当存储和网络效率更重要时避免使用它。

自己尝试一下

以原始字节和 Base64 形式测试有效负载,然后比较大小和传输时间。

参考

Cookie 偏好设置

管理你的 Cookie 偏好。必要 Cookie 无法关闭。

必要 Cookie

必要

用于语言选择、隐私选择和网站基础功能,属于必需项。

Cookie: NEXT_LOCALE

分析 Cookie

可选的分析 Cookie 可帮助我们了解访问情况并改进网站。

Cookie: _ga, _gid, _gat, _clck, _clsk

广告 Cookie

可选的广告 Cookie 可能用于展示相关广告并衡量广告效果。

Cookie: __gads, _gcl_au, IDE