【问题标题】:React / NodeJS - Image saved as Base64 in MySQL databaseReact / NodeJS - 在 MySQL 数据库中保存为 Base64 的图像
【发布时间】:2022-02-16 05:49:07
【问题描述】:

所以我在我的网站上使用了 QuillJS 编辑器。这些图像现在以 base64 格式保存在我的数据库中。但是,由于 Base64 中的数据非常长,因此我的搜索速度很慢。事实上,我不需要通过 Base64 代码运行搜索。

我有哪些选择? 以下是我想到的一些:

  1. 将 Base64 代码转换为图像并保存在文件服务器中,并用指针替换地址
  2. 将 Base64 转换为 BLOB(这有帮助吗?)

在这个阶段现在可以实施这些吗?或者有什么选择?

【问题讨论】:

  • 最好将图像(特别是如果它们足够大)存储在数据库之外(在某些外部存储,如谷歌云存储或 S3 中)并只存储指向它们的链接(可能是更好的相关链接)。
  • 由于我已经将它们作为base64存储在数据库alr上,现在有什么方法可以将它们保存到s3吗?
  • 只需编写一次性代码即可转换并存储到S3。

标签: mysql node.js base64


【解决方案1】:

请提供SHOW CREATE TABLE 和“这么慢”的查询。听起来很简单的事情搞砸了。

MEDIUMTEXT CHARACTER SET ascii COLLATE ascii_bin with Base64 与 MEDIUMBLOB 没有太大区别,除了:

  • 请注意,我指定了轻量级排序规则。
  • BLOB 将是 Base64 大小的 6/8。
  • BLOB 中的 Base64 与带有 ascii_bin 的 TEXT 基本相同。

base64 图像将如何处理?如果您在网页上显示,我建议将其存储在没有 base64 的文件中并使用<img src=...>。然后在页面构建后完成额外的加载,如果有多个图像,则并行(由浏览器和服务器)。

“我的搜索速度很慢”——我们需要更好地了解搜索是如何执行的,以评估其中哪些是“缓慢的”:

  • 整理
  • BLOB 与文本
  • 位于数据库中、文件中与“云服务器”中
  • 从 base64 转换回二进制
  • 架构(创建表)
  • 别的东西

【讨论】:

    猜你喜欢
    • 2016-02-09
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    相关资源
    最近更新 更多