PerformanceResourceTiming: encodedBodySize property
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2023.
Note: This feature is available in Web Workers.
Thuộc tính chỉ đọc encodedBodySize biểu thị kích thước (tính bằng octet) nhận được từ lần tìm nạp (HTTP hoặc cache) của phần thân payload trước khi loại bỏ mọi content encoding đã áp dụng (như gzip hoặc Brotli). Nếu tài nguyên được truy xuất từ application cache hoặc một tài nguyên cục bộ, nó phải trả về kích thước của phần thân payload trước khi loại bỏ bất kỳ content encoding nào đã áp dụng.
Giá trị
Thuộc tính encodedBodySize có thể có các giá trị sau:
- Một số biểu thị kích thước (tính bằng octet) nhận được từ lần tìm nạp (HTTP hoặc cache) của phần thân payload, trước khi loại bỏ mọi content encoding đã áp dụng.
0nếu tài nguyên là một yêu cầu cross-origin và không dùng tiêu đề phản hồi HTTPTiming-Allow-Origin.
Ví dụ
>Kiểm tra xem nội dung có được nén hay không
Nếu các thuộc tính encodedBodySize và decodedBodySize không phải null và khác nhau, nội dung đã được nén (ví dụ gzip hoặc Brotli).
Ví dụ dùng PerformanceObserver, thông báo các performance entry resource mới khi chúng được ghi trong performance timeline của trình duyệt. Dùng tùy chọn buffered để truy cập các entry từ trước khi observer được tạo.
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 });
Ví dụ dùng Performance.getEntriesByType(), chỉ hiển thị các performance entry resource đang có trong performance timeline tại thời điểm bạn gọi phương thức này:
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!`);
}
});
Thông tin kích thước nội dung cross-origin
Nếu giá trị của thuộc tính encodedBodySize là 0, tài nguyên có thể là một yêu cầu cross-origin. Để hiển thị thông tin kích thước nội dung cross-origin, cần đặt tiêu đề phản hồi HTTP Timing-Allow-Origin.
Ví dụ, để cho phép https://mdn.go-mizu.dev xem kích thước nội dung, tài nguyên cross-origin nên gửi:
Timing-Allow-Origin: https://mdn.go-mizu.dev
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| Resource Timing> # dom-performanceresourcetiming-encodedbodysize> |