Если вы используете EC2, то S3 - ваш лучший вариант. «Лучшая практика» - просто предварительно отрендерить изображение во всех размерах и загрузить его под разными именами. I.e.:
/images/image_a123.large.jpg
/images/image_a123.med.jpg
/images/image_a123.thumb.jpg
Эта практика используется Digg, Twitter (когда-то давно, может быть, не с twimg ...) и множеством других компаний.
Возможно, это не идеальный вариант, но это самый быстрый и простой способ сделать это. Что касается перехода на другого провайдера, вы, скорее всего, этого не сделаете из-за объема работы по передаче всех файлов в любом случае. Если у вас есть 1 000 000 изображений или 3 000 000 изображений, у вас все еще есть много мегабайт файлов.
К счастью, у S3 есть служба импорта / экспорта. Вы можете отправить им пустой жесткий диск, и они отформатируют его и загрузят на него ваши данные за небольшую плату.
С точки зрения вашей озабоченности по поводу чувствительности к регистру, вы не найдете поставщика, у которого нет чувствительности к регистру. Если ваш код написан правильно, вы нормализуете все имена в верхний или нижний регистр или будете использовать какую-то систему с 64-цифровым идентификатором, которая позаботится о вас.
В целом, S3 предоставит вам наилучшую «отдачу от затраченных средств», и у него есть поддержка CloudFront, если вы хотите ускорить его. Не с использованием S3 по причинам 3 и 4 - нонсенс, так как они, вероятно, будут применяться везде, куда бы вы ни пошли.