Количество файлов в каталоге не должно влиять на время, необходимое для чтения данных файла, но оно может существенно повлиять на количество времени, необходимое для поиска файла, прежде чем вы сможете начать его чтение.
Точные точки останова, при которых возникают основные проблемы, будут варьироваться от типа файловой системы к типу файловой системы, но, как правило, если вы говорите о нескольких сотнях файлов, вам не нужно беспокоиться об этом. Если вы говорите о нескольких тысячах, стоит подумать и, возможно, провести небольшой тест, чтобы увидеть, как ваша файловая система и оборудование справляются с этим. Если вы говорите о десятках тысяч файлов, то вам действительно нужно начать разбивать вещи. (У меня когда-то был сервер печати Linux / e2fs, где CUPS не удаляла свои файлы управления заданиями после того, как закончила печать, и у нее было около 100 000 файлов в одном каталоге. Просто получение списка каталогов заняло более получаса, прежде чем он даже начал отобразить любые имена файлов.)
Разделение их по имени пользователя, возможно, не лучший выбор, поскольку у вас, вероятно, будет много пользователей, загружающих очень мало изображений, и, возможно, пара, которая загружает сотни или тысячи изображений, что может привести к проблемам со временем доступа в этих пользовательские каталоги хранения. Большая проблема в этом сценарии состоит в том, что вы, вероятно, в конечном итоге (при условии успешного сайта) с тысячами или десятками тысяч пользователей и большим количеством подкаталогов так же плохо, как большое количество файлов для замедления доступа к вашему данные.
Поскольку у вас будет временная метка, я бы, вероятно, поместил их в подкаталоги, основанные на последней трехзначной метке времени. Это распределяет файлы относительно равномерно по 1000 подкаталогам и должно поддерживать достаточно небольшое количество файлов в каждом каталоге. (Использование первых трех цифр приведет к тому, что один каталог будет заполнен перед переходом к следующему, вместо того, чтобы распределять их равномерно.) Если в каждом подкаталоге по-прежнему остается слишком много файлов (что, вероятно, означает, что вы имеете дело с миллион загруженных изображений), вы можете добавить второй уровень для предыдущих трех цифр, так что upload-1234567890.jpg будет в конечном итоге в /567/890/upload-1234567890.jpg.