Время для первого байта с JavaScript? - PullRequest
8 голосов
/ 30 июня 2011

Существует ли какой-либо современный браузер, который через javascript выставляет время до первого байта (TTFB) и / или время до последнего байта (TTLB) в запросе http без обращения к какому-либо плагину?

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

Пояснение: Я не ищу какие-либо JS таймеры или инструменты для разработчиков. Что я удивляюсь и надеюсь, так это если есть какие-либо браузеры, которые измеряют время загрузки и выставляют это значение через javascript.

Ответы [ 4 ]

14 голосов
/ 14 марта 2012

Что вам нужно, так это интерфейс W3C PerformanceTiming .Поддержка браузера хорошая (см. в этом опросе с сентября 2011 г.).Как вы и предполагали в ответ на ответ Shadow Wizard, это время фиксируется браузером и отображается в javascript в объекте окна.Вы можете найти их в window.performance.timing.Конечная точка вашего интервала TTFB будет window.performance.timing.responseStart (определяется как «время сразу после того, как пользовательский агент получит первый байт ответа от сервера или от соответствующих кэшей приложений или от локальных ресурсов»).Есть несколько вариантов для начальной точки, в зависимости от того, заинтересованы ли вы во времени выгрузки предыдущего документа или времени для разрешения DNS, поэтому вы, вероятно, захотите прочитать документацию и решить, какой из них подходит для вашего приложения.*

1 голос
/ 30 июня 2011

Боюсь, это просто невозможно.

JavaScript становится «активным» только после того, как часть запроса была отправлена ​​с сервера, принята браузером и проанализирована.

То, что вы спрашиваете, похоже на вопрос: «Могу ли я измерить вес торта после его употребления?» - сначала нужно взвесить, а потом уже есть торт.

0 голосов
/ 30 июня 2011

Невозможно получить истинный TTFB в JS, поскольку страница получает контекст JS только после получения первого байта.Самое близкое, что вы можете получить, это что-то вроде следующего:

<script type="text/javascript">var startTime = (new Date()).getTime()</script>

очень рано в вашем теге <head>.Затем, в зависимости от того, хотите ли вы проверить, когда html заканчивается или все заканчивается загрузкой, вы можете либо поместить аналогичный тег в конец html-страницы (и вычесть значения), а затем выполнить XHR обратно на сервер (илиустановите cookie, который вы можете получить на стороне сервера при запросе следующей страницы) или прослушайте событие onload, и сделайте то же самое.

0 голосов
/ 30 июня 2011

Время отклика можно увидеть в Инструментах разработчика Chrome.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...