Как лучше хранить огромное число небольших файлов?
Классический вариант - считать hash (md5, sha1, или sha256) для каждого файла при добавлении, в базе данных хранить хэш - имя фала - размер (опционально), а для записи на диск использовать следующий путь:
./e3/b0/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
первый уровень вложенности - первые два символа хэша в шестнадцатеричном представлении, второй уровень - третий и четвертый символ, имя файла - хэш; количество уровней вложенности можно увеличить, если файлов очень много.
В качестве альтернативного варианта рассмотрите возможность хранения этих объектов в базе данных. Обычно это не лучшая идея, но в вашем случае такой вариант может оказаться предпочтительным. Если на каждой странице содержится множество маленьких объектов, можно уменьшить количество запросов к серверу упаковывая их все в один ajax ответ на стороне сервера (получая содержимое из базы данных), и распаковывая с помощью javascript на клиенте. В некоторых случаях это может приводить к увеличению быстродействия (необходимо проверять на реальных данных).
Классический вариант - считать hash (md5, sha1, или sha256) для каждого файла при добавлении, в базе данных хранить хэш - имя фала - размер (опционально), а для записи на диск использовать следующий путь:
./e3/b0/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
первый уровень вложенности - первые два символа хэша в шестнадцатеричном представлении, второй уровень - третий и четвертый символ, имя файла - хэш; количество уровней вложенности можно увеличить, если файлов очень много.
В качестве альтернативного варианта рассмотрите возможность хранения этих объектов в базе данных. Обычно это не лучшая идея, но в вашем случае такой вариант может оказаться предпочтительным. Если на каждой странице содержится множество маленьких объектов, можно уменьшить количество запросов к серверу упаковывая их все в один ajax ответ на стороне сервера (получая содержимое из базы данных), и распаковывая с помощью javascript на клиенте. В некоторых случаях это может приводить к увеличению быстродействия (необходимо проверять на реальных данных).