Сопоставление общего пути URL с конкретным файлом - PullRequest
0 голосов
/ 03 сентября 2011

Я пишу простой хостинг изображений, где каждое изображение и все его эскизы должны быть доступны только через его имя, например ,iexample.com/XXXXX.jpg.Проблема в том, что каждое изображение и каждая миниатюра должны находиться в одном, возможно, быстро растущем каталоге (корень документа для i.example.com).Я бы предпочел, чтобы каждое изображение находилось в отдельной папке для каждого пользователя.

Поскольку я не могу определить, какое изображение принадлежит тому или иному пользователю, по одному URL, я подумал, что мне нужно написать собственный скрипт, который запрашиваетБаза данных для пользователя и обслуживает изображение.Проблема с этим будет большим количеством запросов к базе данных.На моем сайте есть галерея, которая отображает 60 изображений одновременно, это делает 60 запросов для каждого посетителя, запрашивающего страницу в галерее.

Я мог бы использовать memcached, но если я не сохраню каждый результат запроса к базе данных водин массив, это просто заменит 60 запросов к базе данных на 60 запросов memcached.

Мне все это кажется неоптимальным, поэтому мне интересно, есть ли лучшее решение для этого или мне просто поместить каждое изображение водин каталог в конце концов?

Ответы [ 2 ]

3 голосов
/ 03 сентября 2011

Вы можете использовать первую букву, затем вторую и т. Д. Для разделения изображений на основе их имени.Например, изображение dog.jpg будет сохранено в /path/to/images/d/o/dog.jpg и cat.jpg в /path/to/images/c/a/cat.jpg.Ваше веб-приложение должно было бы выполнить перевод пути, но оно не должно было бы попасть в БД.У вас проблема, если два человека загружают изображение с одинаковым именем.

0 голосов
/ 03 сентября 2011

Вы не можете поместить все изображения в один каталог, если хотите различать изображения, когда разные люди загружают изображения с одинаковыми именами.Если вы хотите загрузить изображение и убедиться, что все изображения, принадлежащие конкретному человеку, продолжают поступать в каталог этого человека, вы должны использовать что-то вроде www.example.com/images/user_id/xxxxxxx.jpg;и вы должны убедиться, что все пользователи входят в систему, чтобы идентифицировать свои каталоги;Таким образом, каталог user_id будет иметь разные идентификаторы для разных людей, независимо от того, обращаетесь ли вы к базе данных или нет.Пример: у пользователя с user_id = 231 будет www.example.com/images/231/xxxxxx1.jpg (или www.example.com/images/portrait_231/xxxxxx1.jpg, если вы, как разработчик, хотите создать большечем один подкаталог для каждого пользователя).Если вы все еще не понимаете, что я имею в виду, пожалуйста, напишите мне @ ike_bullocks@yahoo.com: я работаю над изображениями уже более года!

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