当前位置: 首页 > article >正文

Total Blocking Time指标

Total Blocking Time

总阻塞时间 (TBT) 是一项用于衡量加载响应能力的重要实验指标,因为它有助于量化网页在变为可靠交互之前处于非交互状态的严重程度。

TBTTotal Blocking Time),阻塞总时间,记录在 FCPTTI 之间所有长任务的阻塞时间总和。用于衡量在页面加载过程中,用户交互受到阻塞的总时间。

假如说在 FCPTTI 之间页面总共执行了以下长任务(执行时间大于 50ms)及短任务(执行时间低于 50ms)
请添加图片描述

如果任务时间足够长(超过 50 毫秒),用户很可能会注意到延迟,并认为网页运行缓慢或出现网络问题。

每个长任务的阻塞时间就等于它所执行的总时间减去 50ms,网页的总阻塞时间是在测量的时间范围内(在 FCP 后,TTI 之前)发生的每项长任务的阻塞时间的总和。

请添加图片描述

所以对于上图的情况来说,TBT 总共等于 345ms。

这个指标的高低其实也影响了 TTI 的高低,或者说和长任务相关的几个指标都有关联性。

获取阻塞总时间:

const observer = new PerformanceObserver((list) => {
  let totalBlockTime = 0;
  for (const entry of list.getEntries()) {
    if(entry.duration > 50) {
        totalBlockTime += (entry.duration - 50)
    }
    console.log('longtask candidate: ', entry.duration);
  }
  console.log('total block time: ', totalBlockTime)
});
observer.observe({entryTypes: ['longtask']});

TBT 得分

为了提供良好的用户体验,在一般移动设备硬件上进行测试时,网站应力求将总阻塞时间控制在 200 毫秒以内。

优化 TBT 的方法

  1. 减少主线程任务:

    将 JavaScript 代码分成较小的任务块,避免在主线程上执行过长的任务。使用 requestIdleCallback 和 setTimeout 来将任务分片处理。

  2. 优化资源加载:

    延迟加载非关键资源,确保关键内容优先加载。使用 async 和 defer 属性来优化 JavaScript 文件的加载。

  3. 使用 Web Workers:

    将计算密集型的任务移到 Web Workers 中,减少主线程的负载。

  4. 优化代码性能:

    确保 JavaScript 和 CSS 代码经过压缩和优化,以减少解析和执行时间。

除了在页面加载过程中可以用来判断用户交互受到的阻塞总时长外,还可以用来监控记录和优化用户交互中的长任务,比如说点击按钮这些,虽然 TBT 不是专门用于测量这些任务的,但这些用户体验也是需要关注和优化的。


http://www.kler.cn/a/322305.html

相关文章:

  • Unity脚本基础规则
  • C++设计模式:抽象工厂模式(风格切换案例)
  • FastAPI 中间件详解:实现高性能 Web 应用的完整指南和实际案例
  • 智慧社区平台系统提升物业管理效率与居民生活质量
  • SpringBoot中Maven的定义及国内源配置教程,实现自动获取Jar包
  • Java项目实战II基于Java+Spring Boot+MySQL的共享汽车管理系统(源码+数据库+文档)
  • TinyWebSever项目面试题整理
  • OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【Trace调测】
  • 三大硬核方式揭秘:Java如何与底层硬件和工业设备轻松通信!
  • EE trade:黄金T+D是什么意思
  • 【系统架构设计师】专题:软件架构概述
  • 银河麒麟桌面操作系统如何添加WPS字体
  • pyqt瀑布流布局
  • java提升-常见的java调试工具介绍
  • 在 Kubernetes 上部署 .NET 应用的完整指南:从容器化到自动化 CI/CD
  • 【深度学习】03-神经网络01-4 神经网络的pytorch搭建和参数计算
  • BiGRU——提高基于 RNN免疫反应预测的准确性
  • 矩阵学习过程中的一些思考
  • 关于LlamaIndex 的几种索引方式介绍
  • es高级查询——多字段聚合
  • Spring在不同类型之间也能相互拷贝?
  • 【java17】java17新特性之Stream.toList()
  • 3271.哈希分割子串
  • 前端使用vue点击上传文件,传送给后端,后端进行文件接收
  • 区块链—共享块存储安全可信任可追踪分布式数据库系统技术
  • LTE SSS产生过程中z序列的介绍和MATLAB以及C语言实现