PerformanceResourceTiming: свойство transferSize
Базовая линия 2023
Новое свойство
С марта 2023 года данная функция работает на последних устройствах и версиях браузеров. Возможно, эта функция не будет работать на старых устройствах или браузерах.
Примечание: Эта функция доступна в Web Workers.
Это transferSize только для чтения, которое представляет размер (в октетах) полученного ресурса. Размер включает поля заголовка ответа и тело полезной нагрузки ответа (как определено в RFC7230).
Если ресурс получен из локального кэша или это ресурс с другим происхождением, это свойство возвращает ноль.
Значение
Данное transferSize свойство может иметь следующие значения:
- Число, представляющее размер (в октетах) полученного ресурса. Размер включает поля заголовка ответа и тело полезной нагрузки ответа (RFC7230).
-
0если ресурс был мгновенно получен из кэша. -
0если ресурс — это запрос с другим происхождением и не использовался заголовок ответа HTTPTiming-Allow-Origin.
Примеры
Проверка попадания в кэш
Для сред, не поддерживающих свойство responseStatus, свойство transferSize можно использовать для определения попадания в кэш. Если transferSize равно нулю, а размер декодированного тела ресурса ненулевой (что означает, что ресурс имеет то же происхождение или содержит заголовок Timing-Allow-Origin), ресурс был получен из локального кэша.
Пример с использованием PerformanceObserver, который уведомляет о новых resource записях производительности, когда они записываются в временной шкале производительности браузера. Используйте опцию buffered для доступа к записям до создания наблюдателя.
const observer = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
if (entry.transferSize === 0 && entry.decodedBodySize > 0) {
console.log(`${entry.name} was loaded from cache`);
}
});
});
observer.observe({ type: "resource", buffered: true });
Пример с использованием Performance.getEntriesByType(), который отображает только resource записи производительности, присутствующие во временной шкале производительности браузера на момент вызова этого метода:
const resources = performance.getEntriesByType("resource");
resources.forEach((entry) => {
if (entry.transferSize === 0 && entry.decodedBodySize > 0) {
console.log(`${entry.name} was loaded from cache`);
}
});
Информация о размере контента с другим происхождением
Если значение свойства transferSize равно 0 и ресурс не загружен из локального кэша, он может быть запросом с другим происхождением. Чтобы получить информацию о размере контента с другим происхождением, необходимо установить заголовок ответа HTTP Timing-Allow-Origin.
Например, чтобы https://developer.mozilla.org мог видеть размеры контента, ресурс с другим происхождением должен отправлять:
Timing-Allow-Origin: https://developer.mozilla.org
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
transferSize |
54 | 17 | 45 | 41 | 16.4 | 54 | 45 | 41 | 16.4 | 6.0 | 54 |
См. также
© 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/transferSize