Сгенерированная страница облачных функций Firebase помечена для уменьшения времени отклика сервера - PullRequest
0 голосов
/ 02 мая 2018

У меня есть проект веб-сайта Firebase, сейчас все выглядит хорошо, за исключением страниц, созданных с помощью облачных функций Firebase, помеченных как сокращающие время отклика сервера при оценке скорости страниц. Выводы приведут к получению 0.5 - 1.5 секунд.

Статические страницы получают оценку 99 на мобильном телефоне и 86 на рабочем столе. С облачными функциями генерируются страницы, однако, самое высокое, что я получаю для мобильных устройств, составляет 75, а самое низкое - до 30.

Вот некоторые сведения о том, что происходит:

  • Запрашиваемая страница идентифицируется, чтобы подготовить значения, необходимые для запросов Firestore.
  • 4 Запроса Firestore (3 коллекции с <100 документов и 1 с <5000 документов, которые очень малы). </li>
  • Данные из запросов организованы и подготовлены для рендеринга.
  • Страница отображается с res.render()

Оригинальная сборка:

  • Облачные функции
  • Express
  • Cors
  • Руль (как шаблонный движок)

Эта сборка обычно приносит мне оценку 60-75. Время отклика сервера все еще велико, но оно соответствует диапазону 0.5 - 1.5

Альтернативная сборка:

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

  • Облачные функции
  • Express
  • Cors
  • PUG (как шаблонный движок)

Эта сборка дает как лучшие, так и худшие оценки. Я не получаю средний балл по этому показателю 60-75. Максимальное значение, которое я получил, - идеальное значение 100, а самое низкое - очень низкое 30. . Плохо то, что это очень противоречиво, и я не могу определить причину.

Это проблема холодного запуска?

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

Первая попытка Я сделал функцию, которая будет пинговать функции, используемые моими облачными функциями. Я запускал его и включал его каждые 10 секунд на своем рабочем столе. Через несколько минут я проверил Pagespeed, есть ли какие-либо эффекты, без улучшений.

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

Так что, я думаю, я должен вычеркнуть проблему Cold Start? Или я неправильно решаю проблему холодного старта? Или, может быть, это шаблонно, поскольку использование двух разных шаблонизаторов дает разные результаты?

Во всяком случае, это то, что я сделал до сих пор, есть идеи о том, как уменьшить время отклика сервера страниц, созданных с помощью облачных функций Firebase?

1 Ответ

0 голосов
/ 02 мая 2018

Холодный старт может быть вашей проблемой.

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

Однако - если у вас есть несколько пользователей, пытающихся использовать облачную функцию, она выделит один теплый контейнер для соединения, а затем еще пару холодных контейнеров другим пользователям. Это то, как они масштабируются - создавая больше контейнеров.

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

Читать дальше Холодный запуск

Новый экземпляр функции запускается в двух случаях:

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

...