PerformanceResourceTiming: encodedBodySize-Eigenschaft

Baseline 2023
Newly available

Since March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die encodedBodySize-Eigenschaft ist eine schreibgeschützte Eigenschaft, die die Größe (in Oktetten) des beim Fetch (HTTP oder Cache) empfangenen Nutzlastkörpers darstellt, bevor jegliche angewandten Inhaltskodierungen (wie gzip oder Brotli) entfernt werden. Wenn die Ressource aus einem Anwendungs-Cache oder einer lokalen Ressource abgerufen wird, muss die Größe des Nutzlastkörpers vor der Entfernung jeglicher angewandten Inhaltskodierungen zurückgegeben werden.

Wert

Die encodedBodySize-Eigenschaft kann die folgenden Werte haben:

  • Eine Zahl, die die Größe (in Oktetten) des beim Fetch (HTTP oder Cache) empfangenen Nutzlastkörpers darstellt, bevor jegliche angewandte Inhaltskodierungen entfernt werden.
  • 0, wenn die Ressource eine Cross-Origin-Anfrage ist und kein Timing-Allow-Origin-HTTP-Antwort-Header verwendet wird.

Beispiele

Überprüfung, ob der Inhalt komprimiert wurde

Wenn die Eigenschaften encodedBodySize und decodedBodySize nicht null sind und sich unterscheiden, wurde der Inhalt komprimiert (zum Beispiel gzip oder Brotli).

Ein Beispiel mit einem PerformanceObserver, der über neue resource-Performance-Einträge informiert, wenn sie in der Performance-Zeitleiste des Browsers aufgezeichnet werden. Verwenden Sie die buffered-Option, um auf Einträge vor der Erstellung des Observers zuzugreifen.

js
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 });

Ein Beispiel unter Verwendung von Performance.getEntriesByType(), das nur resource-Performance-Einträge zeigt, die zum Zeitpunkt des Aufrufs dieser Methode in der Performance-Zeitleiste des Browsers vorhanden sind:

js
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!`);
  }
});

Informationen zur Größe von Cross-Origin-Inhalten

Wenn der Wert der encodedBodySize-Eigenschaft 0 ist, könnte die Ressource eine Cross-Origin-Anfrage sein. Um Cross-Origin-Informationsgrößen offenzulegen, muss der Timing-Allow-Origin-HTTP-Antwort-Header gesetzt werden.

Zum Beispiel sollte die Cross-Origin-Ressource, um https://developer.mozilla.org die Inhaltsgrößen zu zeigen, senden:

http
Timing-Allow-Origin: https://developer.mozilla.org

Spezifikationen

Specification
Resource Timing
# dom-performanceresourcetiming-encodedbodysize

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
encodedBodySize

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Has more compatibility info.

Siehe auch