Spec-Zone.ru › Web APIs

PerformanceResourceTiming: свойство transferSize

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

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

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

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

Это transferSize только для чтения, которое представляет размер (в октетах) полученного ресурса. Размер включает поля заголовка ответа и тело полезной нагрузки ответа (как определено в RFC7230).

Если ресурс получен из локального кэша или это ресурс с другим происхождением, это свойство возвращает ноль.

Значение

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

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

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

Спецификация
Временные метки ресурсов
# dom-performanceresourcetiming-transfersize

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

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

См. также

  • 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/transferSize

Spec-Zone.ru

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