由于以下几个原因,通常不鼓励在数据库中存储 Base64 编码图像:
增加存储空间:
Base64 编码增加了大小图像数据减少约 33%。
性能开销:
在数据库访问期间对图像进行编码和解码会带来显着的性能开销,如观察到的延迟问题所示。
数据传输效率低下:
编码后的图像数据比原始图像大,导致增加数据传输时间。
文件存储:
将图像作为文件存储在文件系统上是首选方法。它避免了与数据库存储相关的性能和存储问题。
二进制数据存储:
MySQL 默认不支持在列中存储二进制数据。但是,您可以使用专门的存储引擎(例如带有 BLOB 列的 InnoDB)来存储二进制数据,但通常不建议对图像使用这种方法。
为了解决性能问题,一种可能的解决方案是从数据库行中单独检索图像。这可以通过以下方式完成:
安全性注意事项:
在文件系统上存储图像时,实施适当的安全措施以防止未经授权的访问并保护用户数据非常重要。
可扩展性:
作为随着图像和用户数量的增长,管理大型文件系统可能会变得复杂。考虑使用 Amazon S3 或 CDN 服务等文件分发系统来实现可扩展性。
由于性能和存储影响,通常不建议将图像存储在数据库中。最好单独使用文件存储和检索图像,以确保应用程序的最佳性能和数据管理。
以上是为什么从数据库检索和编码 Base64 图像如此缓慢?的详细内容。更多信息请关注PHP中文网其他相关文章!