PerformanceResourceTiming: свойство encodedBodySize
Базовая линия 2023
Новое свойство
С марта 2023 года эта функция работает на последних устройствах и версиях браузеров. Возможно, эта функция не будет работать на старых устройствах или браузерах.
Примечание: Эта функция доступна в Web Workers.
Это encodedBodySize только для чтения свойство, представляющее размер (в октетах) полученного из запроса (HTTP или кэш) тела полезной нагрузки до удаления любых примененных кодировок содержимого (например, gzip или Brotli). Если ресурс получен из кэша приложения или локального ресурса, он должен вернуть размер тела полезной нагрузки до удаления любых примененных кодировок содержимого.
Значение
encodedBodySize свойство может иметь следующие значения:
- Число, представляющее размер (в октетах) полученного из запроса (HTTP или кэш) тела полезной нагрузки до удаления любых примененных кодировок содержимого.
-
0если запрос переходит к другому домену и не используется заголовок HTTPTiming-Allow-Origin.
Примеры
Проверка, было ли содержимое сжато
Если encodedBodySize и decodedBodySize свойства не 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!`);
}
});
Информация о размере содержимого из другого домена
Если значение encodedBodySize свойства равно 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 | |
encodedBodySize |
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/encodedBodySize