我正在上传一些图片到MySQL中的一个blob,但每次上传都很慢。我尝试上传纯文本与在上传之前将文本转换为缓冲区,这两种方式看起来都和另一种一样慢,但我有一种感觉,转换更快。我正在使用NodeJS,并在客户端上传fileReader结果值。有什么方法可以让我在服务器上上传得更快吗?我在想,如果我插入缓冲区,MySQL blob将能够读取正在插入的缓冲区,并且不会试图将其转换为字符串。有没有办法绕过MySQL blob的转换过程,这样我就可以更快地上传?还是转换发生得很快,是其他什么东西减慢了插入速度?
if(req.body.product_images.length == 0) {
req.body.product_images = null;
} else {
req.body.product_images = req.body.product_images.join('***img_separator***'); //string upload
req.body.product_images = Buffer.from(req.body.product_images, 'utf-8'); //buffer upload
}
1条答案
按热度按时间yizd12fk1#
UTF-8??图像是 * 非 * 字符;它是
BLOB
或BINARY
,并且需要不同地处理。也许传递图像的最佳方式是通过Base64。如果图像用于网页,则不要将其放入数据库。相反,将其存储在文件中,并将其URL存储在数据库中。然后在HTML中构建
<img src=...>
,以便在加载时引用它。不透明字符串
从数据库的Angular 来看:你有一个'opaque'字节串。数据库不需要关心它里面有什么,所以你只需要最有效的插入/获取方式。
BLOB
(或者MEDIUMBLOB
)就可以了。如果使用
TEXT
,CHARACTER SET ascii
将是最佳的,COLLATE ascii_bin
将是最佳的,适合于BASE64。