Заголовки: Server-Timing
Заголовок Server-Timing
Базовая поддержка Широко доступно *
Эта функция хорошо зарекомендовала себя и работает на множестве устройств и в различных версиях браузеров. Она доступна во всех браузерах с марта 2023 года.
* Некоторые части этой функции могут поддерживаться в разной степени.
HTTP-заголовок Server-Timing ответа передаёт пользовательскому агенту одну или несколько метрик производительности цикла запрос-ответ. Он используется для отображения метрик времени работы серверной части (например, чтения/записи базы данных, времени работы ЦП, доступа к файловой системе и т. д.) в инструментах разработчика браузера пользователя или в интерфейсе PerformanceServerTiming.
| Тип заголовка | Заголовок ответа |
|---|
Синтаксис
// A single metric Server-Timing: <timing-metric> // Multiple metrics as a comma-separated list Server-Timing: <timing-metric>, …, <timing-metricN>
Элемент <timing-metric> имеет имя и может содержать необязательные длительность и описание. Например:
// A metric with a name only Server-Timing: missedCache // A metric with a duration Server-Timing: cpu;dur=2.4 // A metric with a description and duration Server-Timing: cache;desc="Cache Read";dur=23.2 // Two metrics with duration values Server-Timing: db;dur=53, app;dur=47.2
Директивы
<timing-metric>-
Список из одной или нескольких метрик, разделённых запятыми. Компоненты каждой метрики разделяются точками с запятой:
<name>-
Токен имени метрики (без пробелов и специальных символов), определяемый реализацией или сервером, например
cacheHit. <duration>Необязательно-
Длительность в виде строки
dur, за которой следует=, а затем значение, напримерdur=23.2. <description>Необязательно-
Описание в виде строки
desc, за которой следует=, а затем значение в виде токена или строки в кавычках, напримерdesc=prodилиdesc="DB lookup".
Имена и описания следует по возможности сокращать (например, использовать сокращения и опускать необязательные значения), чтобы уменьшить объём данных HTTP.
Описание
>Конфиденциальность и безопасность
Заголовок Server-Timing может раскрывать потенциально конфиденциальные сведения о приложении и инфраструктуре. Выбирайте, какие метрики отправлять, когда их отправлять и кому их показывать, исходя из сценария использования. Например, можно показывать метрики только аутентифицированным пользователям и не включать их в общедоступные ответы.
Интерфейс PerformanceServerTiming
Метрики заголовка Server-Timing отображаются в инструментах разработчика браузера, а интерфейс PerformanceServerTiming позволяет инструментам автоматически собирать и обрабатывать метрики с помощью JavaScript. Этот интерфейс доступен только для того же источника, но с помощью заголовка Timing-Allow-Origin можно указать домены, которым разрешён доступ к метрикам сервера. В некоторых браузерах интерфейс доступен только в безопасных контекстах (HTTPS).
Компоненты заголовка Server-Timing соответствуют свойствам интерфейса PerformanceServerTiming следующим образом:
-
"name"->PerformanceServerTiming.name -
"dur"->PerformanceServerTiming.duration -
"desc"->PerformanceServerTiming.description
Примеры
>Отправка метрики с помощью заголовка Server-Timing
Следующий ответ содержит метрику custom-metric длительностью 123.45 миллисекунд и описанием "My custom metric":
Server-Timing: custom-metric;dur=123.45;desc="My custom metric"
Server-Timing в качестве завершающего заголовка HTTP
В следующем ответе заголовок Trailer указывает, что после тела ответа будет передан заголовок Server-Timing. Отправляется метрика custom-metric длительностью 123.4 миллисекунд.
HTTP/1.1 200 OK Transfer-Encoding: chunked Trailer: Server-Timing --- response body --- Server-Timing: custom-metric;dur=123.4
Предупреждение: Только инструменты разработчика браузера могут использовать заголовок Server-Timing в качестве завершающего заголовка HTTP для отображения сведений на вкладке Network -> Timings. Fetch API не может получать завершающие заголовки. Подробнее см. в разделе Совместимость с браузерами.
Спецификации
| Спецификация |
|---|
| Server Timing> # the-server-timing-header-field> |
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari для iOS | Samsung Internet | WebView для Android | WebView для iOS | |
Server-Timing |
65 | 79 | 61 | 52 | 16.4 | 65 | 61 | 47 | 16.4 | 9.0 | 65 | 16.4 |
trailer |
Нет | Нет | 71Распознаётся только заголовокServer-Timing, и он доступен только в инструментах разработчика на вкладке Timing панели сети (ошибка 1403051). Разработчики не могут получать завершающие заголовки через Fetch API или XHR. |
Нет | Нет | Нет | 79Распознаётся только заголовокServer-Timing, и он доступен только в инструментах разработчика на вкладке Timing панели сети (ошибка 1403051). Разработчики не могут получать завершающие заголовки через Fetch API или XHR. |
Нет | Нет | Нет | Нет | Нет |
См. также
PerformanceServerTiming-
Заголовок
Trailer
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Server-Timing