Вот предложение по схеме:
Создайте три папки - эскизы, отображать изображения и оригинальные изображения. В них вы будете хранить кешированные версии миниатюр, измененных размеров для веб-дисплея и исходного изображения.
При загрузке изображения присвойте ему уникальное имя в вашей файловой системе и сохраните его там. Сохраните оригинальное имя и уникальное имя в своей базе данных вместе с любой другой соответствующей информацией.
Если у вас есть какое-то браузер изображений, чтобы выбрать один из этих образов ...
Получить данные изображения из базы данных. Используйте это, чтобы найти миниатюры, отобразить версии или оригиналы.
Когда изображение просматривается, найдите существующий миниатюру. Если у вас есть, отправьте его. Если вы этого не сделаете, создайте его, сохраните в папке миниатюр и отправьте.
Если изображение увеличено для отображения в браузере, проверьте версию дисплея и т. Д., Как на миниатюры. Используйте измененную версию для отображения, так как 4-8Mp - это много данных для отправки только для веб-браузера.
Когда изображение выбрано для загрузки, отправьте оригинал.
Вы должны быть осторожны с контролем кеша во всем этом - выход PHP не будет автоматически кэшироваться, поэтому вам нужно добавить заголовки самостоятельно. Выполнение этого правильно может значительно ускорить ваше приложение.
Вы можете играть с этим, чтобы добавить вложенные папки, если это оправдано, регулировать размер вашего кэшированных изменения размера изображения и т.д.
Удачи!
Что такое «кеш-слой»? –
Я имею в виду добавление кеширования на уровень доступа к данным – Taz
Просто сохраните их в файловой системе изначально. В этом случае вам не нужен слой кэширования – zerkms