Как правильно хранить изображения для товара

Sanu0074
На сайте с 31.08.2012
Offline
110
4098

На сайте например есть пару сотен тысяч товаров, у каждого товара есть по несколько изображений, у каждого изображения по 5 и более миниатюр разных размеров. Эти миниатюры (превьюшки) используются на каждой странице разных размеров копии, а оригинал используеися только в галерее товара.

Сама суть вопроса, как правильно хранить эти картинки?

Например, каждому товару соответствует папка на сервере с именем равным id товара, в этойто папке и лежат все изображения товара, имена у них имеют префикс который соответствует размеру миниатюры, и в момент когда клиент заходит на страницу товара, скрипт ищет папку с ид товара переберает содежимое в ней и регуляркой отфильтровывает нужные миниатюры. Другой вариант, хранить адреса к этим картинкам в базе, тогда не надо будет перебирать папку с изображениями товара. Хранение адресов в базе проще и практичнее, например так легко задать последовательность вывода картинок и установить основную, но этоже можно сделать и префиксами к именам файлов - но так будут корявые имена со всякими лишними символами помимо имени товара.

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

B
На сайте с 18.11.2014
Offline
14
#1

В любом случае будут лишние символы в названии изображения, 5 изображений с одинаковым именем не сделаешь.

Можно вообще все в одну папку сделать, название ведь для каждого товара разные, т.е. будет ручка.png, ручка200x300.png - это для миниатюр, карандаш.png, карандаш200x300.png и т. д.

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

Просто если для каждого товара создавать папку и грузить туда по 5+ изображений это громоздко, у вас же не пару товаров, а 2к+.

Это получится 2к+ папок

Sanu0074
На сайте с 31.08.2012
Offline
110
#2

bomjik, а что плохого в том, что много папок?

Solmyr
На сайте с 10.09.2007
Offline
501
#3
Sanu0074:
Вот меня интересует, какой лучше способ использовать, с точки зрения производительности, удобства и оптимизации.

Путь к миниатюре определенного типа, должен однозначно просчитываться по формуле из пути к оригиналу (который хранится в базе) и названия типа миниатюры.

Например оригинал:

/file/587238.jpeg

Тип миниатюры:

tb123

Путь к миниатюре:

/cache/images/tb123/587238.jpeg

[Удален]
#4
Sanu0074:
bomjik, а что плохого в том, что много папок?

Много папок так же плохо, как и много файлов в одной папке. Тяжело ОС это обрабатывать.

В старых файловых системах вообще были ограничения на количество файлов в одной папке.

Грубо говоря, чем больше папок/файлов, тем больше времени надо, чтобы получить доступ к искомой.

Посмотрите как это решено в разных движках магазинов - не сталкивался.

В WordPress вполне логичное решение: год/месяц/картинки.jpg - для блога подходит идеально. Для ecommerce, если сразу загружать 100.000 товаров, то уже не очень.

Sanu0074
На сайте с 31.08.2012
Offline
110
#5

Solmyr, Почему именно такой способ? В чем именно здесь оптимизация?

A8
На сайте с 04.04.2013
Offline
64
#6

Я чтоб не делать тыщи файлов в одном каталоге делаю субкаталоги, например, можно по первым двум буквам MD5 хэша id товара, например.

Перевод с любого языка на любой за 1 час! (https://www.onehourtranslation.com/affiliate/pirivodcheg)
iNd
На сайте с 20.03.2009
Offline
122
iNd
#7

сделать подпапки и не мучать мозг

/images/1.jpg

/images/small/1.jpg

/images/preview/1.jpg

/images/full/1.jpg

и тд

если картинок папок много, добавить внутри папок еще иерархию

если ваш сервер не справляется с папками, то сменить сервер надо было лет 5 назад

Solmyr
На сайте с 10.09.2007
Offline
501
#8
BrimStone:
Много папок так же плохо, как и много файлов в одной папке. Тяжело ОС это обрабатывать.

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

При бэкапах/репликации в общем случае хорошо, когда у вас итого мало папок, не мало папок в какой-то конкретной подпапке, а вообще, итого папок мало. Это обычно бывает при такой структуре, когда в одной папке много файлов.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий