Spec-Zone.ru › Web APIs

PerformanceResourceTiming

Базовая Широко доступна *

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2017 года.

* Некоторые части этой функции могут иметь разный уровень поддержки.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Примечание: Эта функция доступна в Веб-воркерах.

Интерфейс PerformanceResourceTiming позволяет извлекать и анализировать подробные данные о времени загрузки ресурсов приложения. Приложение может использовать эти метрики времени, чтобы определить, например, сколько времени занимает загрузка определенного ресурса, такого как XMLHttpRequest, <SVG>, изображение или скрипт.

PerformanceEntry PerformanceResourceTiming

Описание

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

Типичные метрики времени загрузки ресурсов

Свойства этого интерфейса позволяют рассчитывать определенные метрики времени загрузки ресурсов. Распространенные случаи использования включают:

  • Измерение времени рукопожатия TCP (connectEnd - connectStart)
  • Измерение времени поиска DNS (domainLookupEnd - domainLookupStart)
  • Измерение времени перенаправления (redirectEnd - redirectStart)
  • Измерение времени промежуточного запроса (firstInterimResponseStart - finalResponseHeadersStart)
  • Измерение времени запроса (responseStart - requestStart)
  • Измерение времени согласования TLS (requestStart - secureConnectionStart)
  • Измерение времени получения (без перенаправлений) (responseEnd - fetchStart)
  • Измерение времени обработки ServiceWorker (fetchStart - workerStart)
  • Проверка, был ли контент сжат (decodedBodySize не должно быть encodedBodySize)
  • Проверка, были ли задействованы кэши (transferSize должны быть 0)
  • Проверка, используются ли современные и быстрые протоколы (nextHopProtocol должен быть HTTP/2 или HTTP/3)
  • Проверка, являются ли правильные ресурсы блокирующими для рендеринга (renderBlockingStatus)

Свойства экземпляра

Унаследовано от PerformanceEntry

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

PerformanceEntry.duration Только для чтения

Возвращает timestamp, который является разницей между свойствами responseEnd и startTime.

PerformanceEntry.entryType Только для чтения

Возвращает "resource".

PerformanceEntry.name Только для чтения

Возвращает URL ресурса.

PerformanceEntry.startTime Только для чтения

Возвращает timestamp для момента начала загрузки ресурса. Это значение эквивалентно PerformanceResourceTiming.fetchStart.

Отметки времени

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

Timestamp diagram listing timestamps in the order in which they are recorded for the fetching of a resource

PerformanceResourceTiming.redirectStart Только для чтения

DOMHighResTimeStamp, представляющая время начала загрузки, вызвавшей перенаправление.

PerformanceResourceTiming.redirectEnd Только для чтения

DOMHighResTimeStamp сразу после получения последнего байта ответа последнего перенаправления.

PerformanceResourceTiming.workerStart Только для чтения

Возвращает DOMHighResTimeStamp непосредственно перед отправкой FetchEvent, если поток Service Worker уже запущен, или непосредственно перед запуском потока Service Worker, если он еще не запущен. Если ресурс не перехватывается потоком Service Worker, свойство всегда возвращает 0.

PerformanceResourceTiming.fetchStart Только для чтения

DOMHighResTimeStamp непосредственно перед тем, как браузер начинает загрузку ресурса.

PerformanceResourceTiming.domainLookupStart Только для чтения

DOMHighResTimeStamp непосредственно перед тем, как браузер начинает поиск доменного имени ресурса.

PerformanceResourceTiming.domainLookupEnd Только для чтения

DOMHighResTimeStamp, представляющая время сразу после завершения браузером поиска доменного имени ресурса.

PerformanceResourceTiming.connectStart Только для чтения

DOMHighResTimeStamp непосредственно перед тем, как браузер начинает устанавливать соединение с сервером для получения ресурса.

PerformanceResourceTiming.secureConnectionStart Только для чтения

DOMHighResTimeStamp непосредственно перед тем, как браузер начинает процесс рукопожатия для обеспечения безопасности текущего соединения.

PerformanceResourceTiming.connectEnd Только для чтения

DOMHighResTimeStamp сразу после того, как браузер завершил установку соединения с сервером для получения ресурса.

PerformanceResourceTiming.requestStart Только для чтения

DOMHighResTimeStamp непосредственно перед тем, как браузер начнет запрос ресурса у сервера.

PerformanceResourceTiming.firstInterimResponseStart Экспериментально Только для чтения

DOMHighResTimeStamp, представляющая время промежуточного ответа (например, 100 Continue или 103 Early Hints).

PerformanceResourceTiming.responseStart Только для чтения

DOMHighResTimeStamp сразу после того, как браузер получил первый байт ответа от сервера (который может быть промежуточным ответом).

PerformanceResourceTiming.finalResponseHeadersStart Экспериментально Только для чтения

DOMHighResTimeStamp, представляющая время ответа окончательных заголовков (например, 200 Success) после любого промежуточного времени ответа.

PerformanceResourceTiming.responseEnd Только для чтения

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

Дополнительная информация о ресурсе

Кроме того, этот интерфейс предоставляет следующие свойства, содержащие дополнительную информацию о ресурсе:

PerformanceResourceTiming.contentType Только для чтения Экспериментальная

Строка, представляющая собой минимизированную и стандартизированную версию MIME-типа полученного ресурса.

PerformanceResourceTiming.decodedBodySize Только для чтения

Число, представляющее размер (в октетах) полученного из запроса (HTTP или кеша) тела сообщения после удаления применённого кодирования.

PerformanceResourceTiming.deliveryType Экспериментальная Только для чтения

Указывает, как был доставлен ресурс — например, из кеша или из навигационного предварительного получения.

PerformanceResourceTiming.encodedBodySize Только для чтения

Число, представляющее размер (в октетах) полученного из запроса (HTTP или кеша) тела полезной нагрузки до удаления применённого кодирования.

PerformanceResourceTiming.initiatorType Только для чтения

Строка, представляющая веб-платформенную функцию, которая инициировала запись производительности.

PerformanceResourceTiming.nextHopProtocol Только для чтения

Строка, представляющая сетевой протокол, используемый для получения ресурса, как определено в ALPN Protocol ID (RFC7301).

PerformanceResourceTiming.renderBlockingStatus Только для чтения

Строка, представляющая состояние блокировки рендеринга. Либо "blocking" или "non-blocking".

PerformanceResourceTiming.responseStatus Только для чтения

Число, представляющее код состояния HTTP-ответа, возвращённый при получении ресурса.

PerformanceResourceTiming.transferSize Только для чтения

Число, представляющее размер (в октетах) полученного ресурса. Размер включает в себя поля заголовка ответа и тело полезной нагрузки ответа.

PerformanceResourceTiming.serverTiming Только для чтения

Массив записей PerformanceServerTiming, содержащих метрики времени сервера.

Методы экземпляра

PerformanceResourceTiming.toJSON()

Возвращает JSON-представление объекта PerformanceResourceTiming.

Примеры

Регистрация информации о времени обработки ресурсов

Пример использования PerformanceObserver, который уведомляет о новых записях производительности resource по мере их записи в временной шкале производительности браузера. Используйте опцию buffered для доступа к записям, которые были созданы до создания наблюдателя.

const observer = new PerformanceObserver((list) => {
  list.getEntries().forEach((entry) => {
    console.log(entry);
  });
});

observer.observe({ type: "resource", buffered: true });

Пример использования Performance.getEntriesByType(), который показывает только записи производительности resource в временной шкале производительности браузера на момент вызова этого метода:

const resources = performance.getEntriesByType("resource");
resources.forEach((entry) => {
  console.log(entry);
});

Требования безопасности

Информация о времени обработки кросс-доменных запросов

Многие свойства времени обработки ресурсов ограничены и возвращают 0 или пустую строку, когда ресурс является кросс-доменным запросом. Чтобы предоставить информацию о времени обработки кросс-доменных запросов, необходимо установить HTTP-заголовок Timing-Allow-Origin.

Например, чтобы позволить https://developer.mozilla.org видеть информацию о времени обработки ресурсов, кросс-доменный ресурс должен отправлять:

Timing-Allow-Origin: https://developer.mozilla.org

Спецификации

Спецификация
Время обработки ресурсов
# resources-included-in-the-performanceresourcetiming-interface

Совместимость с браузерами

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
PerformanceResourceTiming 29 12 35 16 11 29 35 16 11 2.0 4.4
connectEnd 43 12 35 32 11 43 35 32 11 4.0 43
connectStart 43 12 35 32 11 43 35 32 11 4.0 43
contentType Нет Нет 129 Нет Нет Нет 129 Нет Нет Нет Нет
decodedBodySize 54 17 45 41 16.4 54 45 41 16.4 6.0 54
deliveryType 117 117 Нет 103 Нет 117 Нет 78 Нет 24.0 117
domainLookupEnd 43 12 35 30 11 43 35 30 11 4.0 43
domainLookupStart 43 12 35 30 11 43 35 30 11 4.0 43
encodedBodySize 54 17 45 41 16.4 54 45 41 16.4 6.0 54
fetchStart 43 12 35 30 11 43 35 30 11 4.0 43
finalResponseHeadersStart 133115–133 133115–133 Нет 101 Нет 133115–133 Нет 77 Нет 23.0 133115–133
firstInterimResponseStart 115 115 Нет 101 Нет 115 Нет 77 Нет 23.0 115
initiatorType 43 12 35 30 11 43 35 30 11 4.0 43
nextHopProtocol 61 17 45 48 11 61 45 45 11 8.0 61
redirectEnd 43 12 35 30 11 43 35 30 11 4.0 43
redirectStart 43 12 35 30 11 43 35 30 11 4.0 43
renderBlockingStatus 107 107 Нет 93 Нет 107 Нет 73 Нет 21.0 107
requestStart 43 12 35 30 11 43 35 30 11 4.0 43
responseEnd 43 12 35 30 11 43 35 30 11 4.0 43
responseStart 133
115–133Возвращает время финального ответа, даже если доступен промежуточный ответ.
85–115
12 35
101Возвращает время финального ответа, даже если доступен промежуточный ответ.
71–101
11 133
115–133Возвращает время финального ответа, даже если доступен промежуточный ответ.
85–115
35
77Возвращает время финального ответа, даже если доступен промежуточный ответ.
60–77
11
23.0Возвращает время финального ответа, даже если доступен промежуточный ответ.
14.0–23.0
133
115–133Возвращает время финального ответа, даже если доступен промежуточный ответ.
85–115
responseStatus 109 109 129 95 Нет 109 129 74 Нет 21.0 109
secureConnectionStart 43 18 35 30 11 43 35 30 11 4.0 43
serverTiming 65 79 61 52 16.4 65 61 47 16.4 9.0 65
toJSON 45 16 35 32 11 45 35 32 11 5.0 45
transferSize 54 17 45 41 16.4 54 45 41 16.4 6.0 54
workerStart 46 16 58 32 11 46 58 32 11 5.0 46
worker_support 43 15 60 32 12 43 60 32 Нет 4.0 43

См. также

  • Замер производительности ресурсов (Обзор)

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API