От переводчика
Начитавшись статей про Heroku, я задался вопросом размещения там простеньких статических веб-приложений. В первое время все было прекрасно, вот только меня смущала неспособность самого Heroku отдавать статику. Даже для такой простой задачи приходилось писать маленькие приложение, которые только и делали, что отдавали статический контент. Хотя, как по мне так с этой задачей лучше бы справился тот же nginx.
Под катом перевод статьи Michael Bleigh из Divshot о том, почему не нужно хостить статику на Heroku
Не надо размещать статические сайты на Heroku
Heroku невероятная платформа. Нет, правда. В Divshot мы запустили уже 20 приложений на Heroku, и лично у меня запущено по меньшей мере 30 приложений. Это моя любимая хостинг платформа для Ruby и Node.js проектов. Но вы глубоко ошибаетесь, если размещаете статические сайты на Heroku.
Да, размещение статических сайтов на Heroku заманчиво. У них даже есть документация, в которой показано, как это сделать. Ведь это так просто — завести приложение на Heroku. Вы уже используете его для всего остального, почему бы не использовать для этого?
- Это дорого. Чтобы обеспечить вашему сайту постоянную работу, вам придется использоваться дополнительный dyno (цена $0 распространяется только на использование одного dyno, который должен простаивать минимум 6 часов в день — прим. переводчика). Это будет стоить вам как минимум $37 в месяц. Только для того, чтобы разместить статические файлы.
- Статическим сайтам не нужны сервера приложений. Блоговые записи, которые вы наверняка найдете, будут ре��омендовать вам использовать Rack или Node.js чтобы разместить свой статический контент на Heroku. Это все равно, что нанять Илона Маска доставлять кофе в ваш офис. Что еще хуже, может оказаться, что Илон Маск плохо справляется с доставкой кофе, ведь он по-настоящему хорош в инновационной деятельности.
- Геостационарность. В Heroku доступно всего два региона: США и Европа, и ваше приложение будет размещено в каком-то одном из них. Статический контент должен доставляться с помощью CDN чтобы ваши пользователи получили его с ближайшего сервера.
Далее автор предлагает в качестве альтернативы собственный сервис Divshot. Всем заинтересованным предлагаю к ознакомлению https://divshot.com/
Если вы размещаете статический контент, призываю вас использовать что-то что подходит для задачи. Это может быть Amazon S3 (желательно с CDN), или GitHub Pages, или nginx. Может даже, Divshot. (Selectel Storage неплохо подойдет — прим. переводчика). Просто не нужно писать целые Ruby/Node.js приложения для статического контента.
Пользуясь случаем, хочу спросить у Хабра, как вы хостите свои статические сайты?