Имеет ли смысл хранить в БД информацию о разных разрешениях картинки?
На сайте есть картинка и производные от нее, в меньших разрешениях: 637х360 и 300x160. Оригинальная картинка может иметь любое разрешение. В БД храню ссылку на оригинальное изображение. Имеет ли смысл хранить ссылку на изображение с расширением 300x160 или искать картинку на сервере по ориг_имя-300х160.jpg?
В данной обобщенной постановке база вообще не нужна. У нас есть в одной руке уникальный индентификатор картинки. Например IMG0001. И мы по нему можем сформировать все 3 линки на дисковое хранилище с картинками.
Если у вас всегда оригинальная картинка конвертируется в несколько с разным разрешением - нет никакого смысла хранить лишнюю информацию в базе, проще сразу искать по имени.
Можно не хранить лишнюю информацию, но и искать нет необходимости:
CREATE TABLE Picture( ID INT IDENTITY NOT NULL,
Original VARCHAR(500) NOT NULL,
PictOriginal AS (Original+'.jpg'),
Pict360 AS (Original+'-637х360.jpg'),
Pict160 AS (Original+'-300x160.jpg')
)
Пара мыслей в пользу хранения в БД всех имён. И переименования в какие-то сгенеренные длинные имена с хэшами.
1. теоретически возможна коллизия:
уже есть картинка с исходным именем img-300x160.jpg (ну, загрузили скачанную с такого же сайта и залили к вам). И потом кто-то загружает картинку img.jpg для которой сгенерится версия 300x160.
2. другая история – защита от хотлинка файлов. Скажем, ВКонтакте имена статики меняет раз в неск. дней.
Там ничего вообще не надо переименовывать. Мы живем в век децентрализованных систем и облаков данных. Берите сразу имя картинки в виде UUID и пускай себе лежит хоть сто лет.
выплюнуть строку с форматированием ничего не стоит
запросить бд и что то отдать стоит х100 примерно
коммон в чем вопрос то? ну добавьте фоновую задачу которая делает вам превьюшки