Почему хостинг Firebase добавляет 1,0 секунды к времени отклика моего облачного сервера?

# #firebase #server-side-rendering #firebase-hosting #google-cloud-run

Вопрос:

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

firebase.json

 "rewrites": [{
  "source": "**",
  "run": { 
    "serviceId": "server", 
    "region": "europe-west1"
  }
}],
 

Пользователи получают обычный index.html файл, содержащий <script> теги для пакетов JS, потому что мое приложение представляет собой клиентский SPA (одностраничное приложение). Все эти статические файлы кэшируются на хостинге Firebase CDN, и они обрабатываются очень быстро (от 30 до 100 мс).

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

введите описание изображения здесь

Ответы SSR (тестирование в моем браузере) обычно занимают от 1,5 до 2 секунд, что, по-моему, немного слишком долго, как вы можете видеть на изображении выше.

Когда я просматриваю журналы из Cloud Run, я вижу, что эти ответы занимают от 300 до 400 мс (изображение ниже).

введите описание изображения здесь

Так почему же для доступа к моему браузеру требуется от 1,5 до 2,0 секунды? Если ответ генерируется в течение 400 мс, на что тратится эта дополнительная 1,0 секунда? Не слишком ли много времени занимает Firebase, чтобы переписывать и выводить?

дополнительный

Когда я нажимаю URL-адрес для запуска в облаке напрямую (минуя пользовательский домен, подключенный к хостингу Firebase), я получаю ответ примерно через 150 мс (изображение ниже).

введите описание изображения здесь

Этот ответ является перенаправлением 302, потому что мой сервер настроен на перенаправление любых вызовов, которые выполняются непосредственно на его URL (т. Е. Без прохождения через хостинг Firebase). Это гарантирует, что мое приложение доступно только из подключенных доменов. Но все же, даже если мы добавим 150 мс 350 мс (из фактического ответа SSR), это будет 500 мс, что намного меньше, чем 1,5 секунды, которые требуются для ответа через хостинг Firebase.

Это нормально?

Комментарии:

1. Вы пробовали разные регионы? us-central1 и так далее…? Кроме того, в зависимости от вашего варианта использования вы можете рассмотреть возможность кэширования CDN, установив соответствующие заголовки HTTP кэша… Хостинг Firebase использует быстрый CDN, и каким-то образом исходные запросы выполняются чрезвычайно медленно…

2. Когда вы запускаете облачный запуск напрямую, я понимаю, что сервер не обрабатывает данные (ответ 302). Может ли это вызвать разницу во времени? Насколько тяжелы передаваемые данные? Я имею в виду тот, который обычно кэшируется. Кроме того, находятся ли местоположения Googlebot и сервера далеко друг от друга?