Spec-Zone.ru › Web APIs

PerformanceResourceTiming: свойство decodedBodySize

Базовая линия 2023
Новое свойство

Начиная с марта 2023 года, эта функция работает на последних устройствах и версиях браузеров. Эта функция может не работать на более старых устройствах или браузерах.

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

Примечание: Эта функция доступна в Web Workers.

Это decodedBodySize только для чтения, возвращающее размер (в октетах) полученного из запроса (HTTP или кэша) тела сообщения после удаления применённого кодирования (например, gzip или Brotli). Если ресурс получен из кэша приложения или локальных ресурсов, возвращается размер полезной нагрузки после удаления любого применённого кодирования.

Значение

Это decodedBodySize свойство может иметь следующие значения:

  • Число, представляющее размер (в октетах) полученного из запроса (HTTP или кэша) тела сообщения после удаления применённого кодирования.
  • 0 , если ресурс является запросом из другого источника (кросс-домен) и не используется заголовок ответа HTTP Timing-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

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

Спецификация
Ресурсные измерения
# dom-performanceresourcetiming-decodedbodysize

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

Рабочие столы Мобильные устройства
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

См. также

  • Timing-Allow-Origin

© 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

Spec-Zone.ru

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