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

Длительное время ожидания (TTFB) для скриптов/стилей на веб-сайте Azure

У меня есть эта интригующая проблема на сайте Azure. На моем сайте используются 4 script файла и 3 файла стиля, каждый из которых минимизирован. Они не такие большие, самые большие - около 200 КБ. Веб-сайт уже начался. Включена опция "Лазурный всегда включен". Когда я вызываю WebApi для данных, он возвращается в < 50ms.

Время загрузки скриптов/стилей веб-сайта Azure

И когда приложение перезагружается, ему требуется 250 мс, чтобы получить первый байт от самого маленького script, а другим нужно гораздо больше. Начальный Html загружается через 60 мс. Сценарии/стили кэшируются, поэтому они не загружаются, но время TTFB убивает производительность. Это повторяет каждую перезагрузку. Приложение не содержит сложной конфигурации, поэтому оно должно работать намного быстрее, чем оно.

Что может вызвать такие проблемы?

4b9b3361

Ответ 1

Хотя ваши статические файлы кэшируются, браузер по-прежнему выдает запросы с заголовком if-modify-since (что приводит к 304).

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

Я бы предложил две вещи:

  • Добавление заголовков Cache-Control и Expire - в некоторых случаях поможет избежать 304 (в значительной степени, если вы не нажмете F5)
  • Использование надлежащего CDN - например, Incapsula или других, что минимизирует время отклика RTT+. Он также может использоваться для легкого управления настройками кеша для различных ресурсов.

Более хороший материал здесь.

Удачи!

Ответ 2

Мое предположение было бы всегда Azures.
Если он работает так, как тот, который предоставляет CloudFlare, он, по сути, проксирует запрос и пытается его кешировать.
В зависимости от конкретной реализации этого кеша на стороне Azure, он может дождаться завершения вывода сценариев, чтобы кэшировать его/проверять кеш, а затем передавать его в браузер.

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

Ответ 3

Сценарии и стили являются статическими и по умолчанию сжаты (вы можете проверить это с помощью HTTP-заголовка "кодирование содержимого": gzip) перед отправкой клиенту. Таким образом, TTFB состоит из сетевой задержки, планирования HTTP-канала браузера и времени статического сжатия файлов с сервера.

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

Однако вам не нужно отключать статическое сжатие, иначе TTFB будет сведен к минимуму, но время передачи контента будет расширено. На самом деле вам не нужно беспокоиться о TTFB, см. Дополнительную информацию: https://blog.cloudflare.com/ttfb-time-to-first-byte-considered-meaningles/

Ответ 4

Я закончил хранение файлов на Azure Storage и обслуживал их Azure CDN. Он обеспечивает высокую скорость ответа и ничего не стоит. Я добавляю их в blob каждый опубликовать в событии Pre-build Gulp.

Ответ 5

ну... есть 2 основных проблемы с вашим сайтом:

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

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

так что, пожалуйста, используйте CDN (или любой другой сервер) для ваших файлов на стороне клиента (в основном css и js, вы также можете перемещать шрифты и изображения)