PerformanceResourceTiming: свойство decodedBodySize
Базовая линия 2023
Новое свойство
Начиная с марта 2023 года, эта функция работает на последних устройствах и версиях браузеров. Эта функция может не работать на более старых устройствах или браузерах.
Примечание: Эта функция доступна в Web Workers.
Это decodedBodySize только для чтения, возвращающее размер (в октетах) полученного из запроса (HTTP или кэша) тела сообщения после удаления применённого кодирования (например, gzip или Brotli). Если ресурс получен из кэша приложения или локальных ресурсов, возвращается размер полезной нагрузки после удаления любого применённого кодирования.
Значение
Это decodedBodySize свойство может иметь следующие значения:
- Число, представляющее размер (в октетах) полученного из запроса (HTTP или кэша) тела сообщения после удаления применённого кодирования.
-
0, если ресурс является запросом из другого источника (кросс-домен) и не используется заголовок ответа HTTPTiming-Allow-Origin.
Примеры
Проверка, было ли содержимое сжато
Если decodedBodySize и encodedBodySize свойства не равны null и отличаются, содержимое было сжато (например, gzip или Brotli).
Пример использования PerformanceObserver, который уведомляет о новых resource записях производительности, по мере их записи в временной шкале производительности браузера. Используйте параметр buffered для доступа к записям, предшествующим созданию наблюдателя.
const observer = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
const uncompressed =
entry.decodedBodySize && entry.decodedBodySize === entry.encodedBodySize;
if (uncompressed) {
console.log(`${entry.name} was not compressed!`);
}
});
});
observer.observe({ type: "resource", buffered: true });
Пример использования Performance.getEntriesByType(), который показывает только resource записи производительности, присутствующие во временной шкале производительности браузера в момент вызова этого метода:
const resources = performance.getEntriesByType("resource");
resources.forEach((entry) => {
const uncompressed =
entry.decodedBodySize && entry.decodedBodySize === entry.encodedBodySize;
if (uncompressed) {
console.log(`${entry.name} was not compressed!`);
}
});
Информация о размере содержимого из другого источника (кросс-домен)
Если значение decodedBodySize свойства равно 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 | |
decodedBodySize |
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/decodedBodySize