PerformanceResourceTiming: свойство renderBlockingStatus
Примечание: Эта функция доступна в Веб-воркерах.
Свойство renderBlockingStatus считывания только для чтения возвращает состояние блокировки отрисовки ресурса.
Полезно для определения ресурсов, которые:
- не блокируют отрисовку и поэтому могут быть отложены, или
- блокируют отрисовку и поэтому могут быть предварительно загружены.
Описание
Ресурсы, блокирующие отрисовку, — это статические файлы, такие как шрифты, CSS и JavaScript, которые блокируют или замедляют отрисовку содержимого страницы в браузере. Браузер автоматически определяет эти блокирующие ресурсы и не рендерит пиксель на экране до загрузки и оценки всех таблиц стилей и синхронных скриптов. Это предотвращает мгновенное отображение нестилизованного содержимого («FOUC»).
В дополнение к автоматическому механизму блокировки отрисовки blocking="render" может быть предоставлен в качестве атрибута и значения для <script>, <style> или <link> элементов для указания явной блокировки отрисовки. Например:
<script blocking="render" src="important.js" defer></script>
Значение
Свойство renderBlockingStatus может иметь следующие значения:
"blocking"-
Ресурс может потенциально заблокировать отрисовку.
"non-blocking"-
Ресурс не блокирует отрисовку.
Примеры
Ведение логов ресурсов, блокирующих отрисовку
Свойство renderBlockingStatus может использоваться для просмотра ресурсов, блокирующих отрисовку.
Пример с использованием PerformanceObserver, который уведомляет о новых записях resource производительности, как только они записываются в временной шкале производительности браузера. Используйте параметр buffered для доступа к записям, созданным до создания наблюдателя.
const observer = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
if (entry.renderBlockingStatus === "blocking") {
console.log(`${entry.name} is render-blocking.`);
}
});
});
observer.observe({ type: "resource", buffered: true });
Пример с использованием Performance.getEntriesByType(), который отображает только записи resource производительности, присутствующие во временной шкале производительности браузера в момент вызова этого метода:
const resources = performance.getEntriesByType("resource");
resources.forEach((entry) => {
if (entry.renderBlockingStatus === "blocking") {
console.log(`${entry.name} is render-blocking.`);
}
});
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
renderBlockingStatus |
107 | 107 | Нет | 93 | Нет | 107 | Нет | 73 | Нет | 21.0 | 107 |
© 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/renderBlockingStatus