2013-01-12 2 views
0

Я просто хотел спросить, было ли быстрое динамическое отображение эскизов изображений, загруженных на S3. Давайте скажем фотографии профиля.Управление динамическими эскизами на Amazon S3/Cloudfront

У меня есть 3 размера этих изображений, которые показаны Фактически, 150x150 и 25x25. На данный момент я динамически изменяю их размер на лету на своем сервере - не S3.

http://www.mydomain.com/images/25X25/image.jpg 

Выше URL, который проверяет, существует ли миниатюра и не генерирует ее. Я разрешаю только 3 размера на данный момент.

Скоро мы переместимся на S3. Возможно ли это и на S3 - мне нужно получить исходное изображение, изменить его размер и затем повторно загрузить на S3 - все на ходу - конечно, с включенным кешем?

Нужно ли это делать, когда я загружаю фактическое изображение - сделайте еще 2 эскиза (с легко читаемым именем файла lile image_25_25 и image_150_150) и загрузите их вместе с ним?

Так в конце концов каждый результат загружать в

https://bucket.s3.amazonaws.com/image.jpg 
https://bucket.s3.amazonaws.com/image_25_25.jpg 
https://bucket.s3.amazonaws.com/image_150_150.jpg 

Как вы думаете, это хороший вариант? Или предложения, пожалуйста, - будем действительно благодарны всем вам (err - всегда am - такое замечательное место, чтобы получить помощь!)

Cheers!

ответ

2

Я бы подумал, что ваш подход во многом будет зависеть от ваших основных целей для внесения этого изменения, какого объема загрузки вы ожидаете обработать, какой типичный коэффициент попадания на эти миниатюры и какие ваши ограничения связаны с затратами на выполнение этого миниатюры (то есть ресурсов сервера, необходимых для хранения и хранения для хранения).

Если # 1 самое важное - ускорить время загрузки изображений для конечных пользователей, независимо от стоимости, то создание миниатюр при загрузке, вероятно, будет лучшим выбором (возможно, наряду с использованием Cloudfront перед ведро S3). Это также приведет к тому, что ваше приложение не будет пытаться динамически обслуживать запросы на эти изображения. Очевидно, что один конфликт, по-видимому, для конечного пользователя может занять больше времени (если вам нужны файлы, которые будут созданы и доступны на S3, прежде чем указывать успех конечному пользователю), и, конечно же, вам придется связать ресурсы сервера и пространство для хранения для каждого отдельного загруженного изображения, независимо от того, будет ли изображение использоваться когда-либо.

Если ваши проблемы касаются использования минимального количества ресурсов и хранилища, вы можете продолжить использовать веб-приложение для обработки запросов изображения и создания изображений по мере необходимости на S3. Вы могли бы использовать что-то вроде s3fs (с включенными функциями кэширования), чтобы сделать эти изображения доступными на локальном монтировании вашего сервера приложений, чтобы ускорить процесс, но на самом деле я бы посоветовал не использовать эту динамическую поддержку контента, если ваш общий Целью является предоставление наилучшего пользовательского опыта (т.е. быстрая загрузка).

+0

Большое спасибо за подробный ответ. Я бы хотел создать и загрузить миниатюры для каждого изображения при загрузке и использовать Cloudfront перед S3 для подачи заявки. Опубликуйте результаты и статистику здесь, чтобы обсудить дальше! – foxybagga

+0

Привет @foxybagga, какой путь вы в конечном итоге приняли? я сейчас на пути к тому, чтобы делать большие пальцы и загружать на S3, но, пытаясь найти лучший способ сделать это, пожалуйста, поделитесь опытом :) – Mike

+0

Hello @ user1725378 - генерация больших пальцев только тогда, когда они были запрошены, звучало как наилучшее решение для меня - сохраненное время выполнения и хранения сервера! – foxybagga

Смежные вопросы