Я создаю небольшое приложение стека MERN (используя базу данных Atlas), где пользователи могут загружать несколько изображений, а затем просматривать их в какой-то галерее.
В настоящее время я загружаю изображения с помощью GridFS.
Проблема в том, что, когда я пытаюсь получить, например, одно изображение из базы данных, требуется слишком много времени, пока я не получу ответ: около секунды для небольшого изображения размером 200x200, когда обычно это занимает 50 мс или даже меньше.
Вот мой путь получения изображения:
router.get('/photo/single/:filename', (req, res) => {
const bucket = new mongoose.mongo.GridFSBucket(mongoose.connection.db, {
chunkSizeBytes: 1024,
bucketName: 'uploads'
})
bucket
.openDownloadStreamByName(req.params.filename).pipe(res)
})
Не так много кода здесь, как вы можете видеть.
Так почему openDownloadStreamByName
работает так медленно в моем случае ? Это просто потому, что я использую бесплатный кластер M0 или я просто что-то упустил в своем маршруте? Или, может быть, хранение изображений в MongoDB само по себе не очень хорошая идея (но я не вижу другого решения, поскольку в моем случае изображения могут весить более 16 МБ)?