Подтвердить что ты не робот

Heroku rails 3.1 app - компилирование активов локально против компиляции активов во время компиляции пули

Я запускаю приложение rails 3.1 на стеке кедра Heroku, которое поддерживает конвейер активов. Heroku перечисляет 3 способа для компиляции активов

  • Компилирование активов локально.
  • Компиляция активов во время компиляции пули.
  • Скомпилировать активы во время выполнения.

Очевидно, что # 3 плохо для производительности, и документы Heroku также рекомендуют против него. Но я не уверен, что лучше между # 1 и # 2.

# 1 требует, чтобы вы запустили rake assets:precompile и включили папку public/assets в git. Ваш слизень будет больше, но я предполагаю, что время простоя для развертывания сайта будет ниже. Но больший размер пули означает медленный запуск приложения, поэтому, возможно, это стирка.

# 2 потребуется больше времени для развертывания обновлений из-за того, что precompile выполняется на стороне Heroku. Тем не менее, у вас будет меньший пул, и там меньше, чтобы управлять/помнить.

Мой вопрос: какой вариант (# 1 или # 2) является лучшим для производства и почему?

Пока это выглядит как вариант №2, но я хочу убедиться, что я ничего не забываю.

4b9b3361

Ответ 1

Я рассмотрел некоторые из этих проблем и получил большой вопрос в моем вопросе здесь: Rails 3.1.1 кэширование ресурсов кэширование Heroku

Я предпочел бы # 2, если бы это сработало для меня, поэтому мне не нужно проверять скомпилированные активы, которые просто раздувают репозиторий git.

Компиляция активов во время компиляции slug не приведет к каким-либо дополнительным простоям, потому что ваше существующее приложение останется в силе до завершения компиляции пули, поэтому не стоит беспокоиться.

Мой совет будет # 2, если вы можете заставить его работать на вас. Если вы закончите работу w/# 1, то лучше всего использовать git rm -r public/assets перед активами рейка: предварительно скомпилируйте, чтобы убедиться, что нет рывков.

Ответ 2

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

В противном случае я предполагаю, что # 1 будет лучшим в производстве, поскольку любой актив можно будет использовать и кэшировать сразу.

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