Эмбер снимает отпечатки пальцев

Я новичок в Ember и столкнулся с проблемой развертывания Ember-приложения. Я использую сервер ember для сервера моего приложения ember, которое было создано с включенным снятием отпечатков пальцев.

/app/node_modules/ember-cli/bin/ember build --environment=production

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

/app/node_modules/ember-cli/bin/ember server --port 80 --live-reload=false --environment $EMBER_ENV

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

172.x.x.x - - [18/Jul/2017:18:44:59 +0000] "GET /assets/vendor-a4e09847ae5ed0421fd631873a322bdb.js HTTP/1.1" 404

  • Генерируется ли этот отпечаток во время выполнения, а не во время сборки?
  • Есть ли способ сделать это действием времени сборки?

Большое спасибо.


person Greg    schedule 18.07.2017    source источник
comment
Я считаю, что это время сборки, и оно будет генерировать новый отпечаток для каждой сборки.   -  person Ember Freak    schedule 18.07.2017
comment
Просто для проверки: вы не должны использовать пользователя ember server для производства! Так зачем вам запускать несколько экземпляров ember-сервера? Вы должны использовать ember build для создания своего приложения, а затем использовать веб-сервер ligke nginx, iis или apache для развертывания файлов на ваших клиентах.   -  person Lux    schedule 18.07.2017
comment
Полезно знать, но теперь мне любопытно, почему бы не использовать сервер ember в prod? Каковы его ограничения? Спасибо   -  person Greg    schedule 19.07.2017
comment
Он был написан с учетом разработки, что влияет на скорость и безопасность. Например, он запускает просмотр файла брокколи и перестраивает приложение даже при отключенной перезагрузке в реальном времени. Если вы устанавливаете дополнение, вам необходимо перезапустить сервер. Могут быть более тонкие вещи. Вы действительно должны создавать свое приложение и использовать рабочий сервер, как было предложено.   -  person locks    schedule 25.07.2017
comment
В конечном итоге проблема заключалась в том, что сервер ember перестраивает проект каждый раз, когда вы его запускаете, поэтому брокколи генерировала новый отпечаток пальца для каждого участника в группе балансировки нагрузки. Мне не удалось найти способ отключить это, поэтому я переключился на обслуживание статического контента из nginx. Всем спасибо.   -  person Greg    schedule 08.08.2017


Ответы (1)


Это определенно время сборки. Результатом ember build является папка dist со сгенерированным index.html, которая содержит ссылки на ресурсы с отпечатками пальцев, а также ресурсы CSS, JavaScript, изображения и т. д.

Убедитесь, что ваш файл index.html не кэширован, и вы правильно распространяете содержимое папки dist на каждый узел.

Чтобы узнать, работает ли он с отключенным кешем, вы можете открыть Инструменты разработчика в Chrome, перейти на вкладку «Сеть» и установить флажок «Отключить кеш».

Хотя это здорово, что вы хотите кэшировать и балансировать нагрузку ваших активов с отпечатками пальцев, вам нужно быть очень осторожным с index.html, так как он должен всегда обновляться с новыми сборками.

person Daniel Kmak    schedule 18.07.2017
comment
Спасибо за быстрый ответ. Тогда это должно быть что-то в моем процессе развертывания. Я создаю с помощью Dockerfile и развертываю один и тот же контейнер несколько раз, что меня смущает, они должны быть точно такими же. Спасибо! - person Greg; 18.07.2017
comment
Убедитесь, что вы выполнили ember build ОДИН РАЗ, но скопировали содержимое НЕСКОЛЬКО РАЗ. :) Проверьте также настройки кэширования вашего сервера. Например, если ответ содержит теги кэширования, например, для кэширования контента на 5 лет. - person Daniel Kmak; 18.07.2017