Как следует хранить изображения, когда нужны несколько размеров? - PullRequest
3 голосов
/ 31 мая 2010

Каков наилучший способ хранения изображений? В настоящее время, когда изображение загружено, я изменяю его размеры до 3 различных размеров (миниатюра, нормальный размер и большой размер). Я сохраняю в базе данных описание изображения, формат и использую идентификационный номер из базы данных в качестве имени изображения. Каждое изображение размера имеет свой каталог.

Стоит ли хранить изображения в базе данных? Должен ли я хранить только больший размер и генерировать миниатюры по мере необходимости? Или у вас есть другие идеи?

Ответы [ 3 ]

2 голосов
/ 31 мая 2010

То, что вы описали, звучит разумно для меня. Вы можете хранить изображения в своей базе данных, но не заметите существенного повышения производительности, и, если ваш веб-хост ограничивает размер базы данных MySQL, вы можете обнаружить, что переплачиваете за пространство базы данных.

Что касается изменения размера изображений, то выполнение этого один раз и сохранение трех копий является гораздо менее затратным в вычислительном отношении, чем создание меньших изображений один раз за запрос; однако вы можете подумать о том, чтобы браузер создавал для вас миниатюры (просто укажите тег img с src, установленным на полноразмерное изображение плюс атрибуты ширины / высоты), который позволит вам сэкономить ресурсы процессора и дисковое пространство при дорого иметь не очень красивые миниатюры (браузеры обычно масштабируют изображения для увеличения скорости при дорогом качестве).

2 голосов
/ 31 мая 2010

Вы можете выбрать сочетание обоих миров, сохраняя большое изображение на SQL (или HDD). По запросу вы создаете миниатюры на лету, но затем сохраняете их в кэше на определенное количество времени.

Это означает, что в любое время вы будете иметь на диске большие изображения и миниатюры для самых последних / часто используемых.

0 голосов
/ 31 мая 2010

Если у вас был сайт на друпале, эта функциональность встроена в http://drupal.org/project/imagecache

...