MongoDB GridFS хранит несколько размеров изображения или использует на лету изменение размера

В моем веб-приложении я использую MongoDB GridFS для хранения загруженных пользователем изображений.

Остальная часть сайта управляется MySQL.

В таблице фотографий (в mysql) у меня есть три поля для хранения MongoId файлового объекта.

  • маленький
  • средний
  • большой

Поэтому я храню три версии изображения. Маленький, средний и большой.

Мой вопрос: иногда мне нужно использовать миниатюру меньше, чем «маленькую» версию изображения (то есть в окне виджетов, аватарах сообщений и т. Д.), Или мне нужно будет использовать небольшую меньшую версию среднего изображения ,

Поэтому мой вопрос: лучше ли было бы сохранить одно изображение в системе GridFS, а затем иметь одно поле в таблице фотографий, хранящее MongoID, а затем создать сценарий, который изменяет размер изображения «на лету» (например, http: // localhost / image / fetch / {mongoid}? resize = 50

В противном случае, в моем db мне понадобятся thumbnail_50, thumbnail_100, medium_300, medium_400 и т. Д. И т. Д.

Каковы были бы последствия смены маршрута изменения размера на лету? это плохо или хорошая идея? Что бы вы сделали?

Благодарю.

Solutions Collecting From Web of "MongoDB GridFS хранит несколько размеров изображения или использует на лету изменение размера"

Изменение размера «на лету» приведет к гораздо большему количеству загрузки процессора на вашем сервере, чем изменение размера до нескольких размеров один раз и сохранение результатов. С другой стороны, изменение размера заблаговременно может привести к большему набору данных, которые будут храниться в GridFS. Другими словами, это компромисс.

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

Вы также должны знать, что HTML и CSS позволяют различные параметры управления отображаемым размером изображения. Например:

<img src="/path/to/image.jpg" width="50"/> 

В результате изображение будет масштабироваться пропорционально ширине 50 пикселей (в любом случае, в большинстве современных браузеров). Вы также можете использовать свойства CSS width и max-width для управления размером изображения.

Для меня и не зная об объеме или размере файлов, которые вы будете хранить, я бы, вероятно, изменил размер при добавлении изображений – другими словами, один раз нажмите скорость страницы и загрузку процессора, а затем выполните различные размеры из GridFS, используя max-width для управления размером экрана, если в одном конкретном случае требуется немного другой размер.