最佳实践
什么时候该用 Base64,什么时候不该用?
了解 Base64 适合用在哪些真实场景、会带来多少体积开销、对缓存和性能有什么影响,以及什么时候应改用文件链接、对象存储或更安全的传输方案。
1 分钟阅读
作者 Binary Code Translator#base64#encoding#api#performance#security
Base64 在现代软件中随处可见。这并不意味着它总是正确的选择。
Base64 的实际用途
Base64 将二进制数据转换为文本安全字符。这是编码,而不是加密。
重要的:
- 任何人都可以解码 Base64。
- 它增加了大小开销(约 33%)。
好的用例
- 在 JSON 中嵌入小的二进制片段。
- 通过纯文本通道移动字节。
- 非常小的资源的数据 URI 预览。
- 与明确需要 Base64 的 API 进行互操作。
糟糕的用例
- 数据库文本列中的大文件存储。
- 性能敏感的有效负载,其中大小很重要。
- 任何人们期望“安全”的地方。
- 替换适当的对象存储/CDN 工作流程。
性能现实
如果您的原始有效负载是 N,则 Base64 输出约为 4/3 * N。
您还需要支付编码/解码的 CPU 成本以及客户端的内存开销。
安全说明
Base64 不是锁。它只是一种格式。
如果您需要安全:
- 在传输过程中使用 TLS。
- 使用静态数据加密。
- 在完整性很重要的情况下使用签名令牌。
实用经验法则
当互操作性是主要要求且有效负载适中时,请使用 Base64。
当存储和网络效率更重要时避免使用它。
自己尝试一下
以原始字节和 Base64 形式测试有效负载,然后比较大小和传输时间。