Масштабирование изображений, хранящихся на S3
Я нахожусь в ситуации, когда мне нужно отправить хранилище изображений для ряда веб-сайтов в службу, которая может масштабироваться бесконечно (S3, CloudFiles и т. Д.). До этого момента мы могли позволить нашим пользователям генерировать нестандартные размеры миниатюр на лету, используя библиотеку изображений Python с некоторой помощью sorl-thumbnail в Django.
При перемещении наших изображений к чему-то вроде S3, способность быстро создавать миниатюры на лету теряется. Мы можем либо:
- Делайте это медленно, загрузив исходник с S3 и создав миниатюру локально
минус: это медленный и интенсивный трафик - Сделайте это заранее, создав заранее определенный набор размеров миниатюр (a'la Flickr) и перенеся их все на S3
con: он ограничивает размеры, которые могут быть сгенерированы, и хранит множество файлов, которые никогда не будут использоваться - Позвольте браузеру изменить размер, используя атрибуты высоты / ширины в теге img.
con: дополнительная пропускная способность, используемая при загрузке файлов большего размера, чем необходимо
На данный момент #3 выглядит простым решением проблемы с небольшими недостатками. Некоторые быстрые тесты и данные с этого сайта показывают, что качество не так плохое, как ожидалось (мы могли бы убедиться, что соотношение сторон сохраняется).
Какие-либо предложения относительно других вариантов или недостатков, которые мы могли бы не принимать во внимание?
примечание: изображения являются цифровыми фотографиями и используются только для отображения в Интернете. Размеры будут варьироваться от 1000-50 пикселей по высоте / ширине.
1 ответ
Я бы рекомендовал использовать EC2 для масштабирования изображений по требованию. Поскольку пропускная способность между EC2 и S3 свободна и должна быть быстрой, я думаю, что это устраняет все проблемы с решением № 1.