Как хранить файлы изображений в бэкэнде сайта - PullRequest
5 голосов
/ 14 февраля 2012

Я создаю сайт и только начал заниматься разработкой бэкэнда.

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

Я хотел бы знать, каков наилучший способ хранения этих изображений. Я только что закончил настройку своего сервера Wamp и добавил новую базу данных с phpMyAdmin. Я обнаружил, что могу хранить каждое изображение непосредственно в базе данных mySQL как тип данных BLOB. Но так ли это лучше?

Спасибо!

Ответы [ 4 ]

7 голосов
/ 14 февраля 2012

Это, безусловно, не тот путь. Затем вам нужно будет сохранить блоб в памяти в PHP, прежде чем отправлять его в браузер.

Лучшим подходом было бы сохранить изображения в виде файлов в файловой системе и просто сохранить имя файла в вашей базе данных. таким образом, вы можете разгрузить весь образ, обслуживающий веб-сервер, и никогда не задействовать PHP в HTTP-запросах на файл.

5 голосов
/ 14 февраля 2012

Хранение файлов в базе данных имеет два основных преимущества:

  1. Безопасность транзакций. Если пользователь редактирует свой профиль (рис. И дату рождения), то либо оба сохраняются, либо ни одного в случае отката / ошибки.

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

Однако из-за многих ловушек я не рекомендую его, особенно если не использовать PHP и MySQL. MySQL не поддерживает потоковую передачу, поэтому в случае большого файла вы собираетесь использовать весь свой оперативной памяти.

Файловая система, несомненно, самый быстрый и естественный способ. Он имеет наименьшие накладные расходы и наименее ресурсоемкий.

Читать:

Хранение файла в базе данных в отличие от файловой системы?

Хранение документов в виде блобов в базе данных - есть ли недостатки?

0 голосов
/ 14 февраля 2012

Лично я не рекомендовал бы хранить файлы в самой базе данных.Я буду хранить ссылки на расположение файлов, чтобы в будущем их можно было масштабировать при необходимости с помощью зеркал и т. Д.

0 голосов
/ 14 февраля 2012

Вы можете сохранить их в БД, а затем легко манипулировать имиджем.Например, вы можете взять исходное изображение из БД и создать несколько изображений кэша (на диске) с различными размерами (используя imagick) и показать их на веб-сайте.Если вы используете БД, вы должны использовать ленивую загрузку при съемке изображений (загружать контент, только если вам это нужно), иначе mysql вылетит на ваш сервер.:)

Вы можете создать каталог /cache/pictures/$id_$width_$height.jpg и сохранить их там.И создание нового изображения, только если $ id_ $ width_ $ height не найден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...