Медленная загрузка изображения из MongoDB - PullRequest
0 голосов
/ 31 марта 2020

Я создаю небольшое приложение стека 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 МБ)?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Я отказался от идеи хранения файлов в MongoDB. Вместо этого я создал корзину на AWS S3, и она отлично работает.

0 голосов
/ 31 марта 2020

Привет, пожалуйста, храните изображения и другие двоичные данные в MongoDB Atlas, используя GridFS .

...