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

【性能】如何计算 Web 页面的 TTI 指标

什么是 TTI 指标

TTI(Time To Interactive),即从页面加载开始到页面处于完全可交互状态所花费的时间。页面处于完全可交互状态时,满足以下 3 个条件:

  • 页面已经显示有用内容。
  • 页面上的可见元素关联的事件响应函数已经完成注册。
  • 事件响应函数可以在事件发生后的 50ms 内开始执行。

很多情况下,开发者往往只关注页面渲染相关的指标,如 FP、FCP 等,而忽视了页面的可用性指标。TTI 即是反映页面可用性的重要指标。TTI 值越小,代表用户可以更早地操作页面,用户体验就更好。

如何获取 TTI 指标

用户访问 Web 页面,通常会有两种模式:

  • 直接通过服务端路由切换的同步跳转场景;
  • 通过客户端路由跳转的 SPA 页面切换场景;

同步跳转场景

Long Task 定义:在浏览器主线程执行时间超过 50ms 的 Task。
静默窗口期定义:窗口所对应的时间内没有 Long Task,且进行中的网络请求数不超过 2 个。

算法描述:

  • 从起始点(一般选择 FCP 或 FMP)时间开始,向前搜索一个不小于 5s 的静默窗口期。静默窗口期定义:窗口所对应的时间内没有 Long Task,且进行中的网络请求数不超过 2 个。
  • 找到静默窗口期后,从静默窗口期向后搜索到最近的一个 Long Task,Long Task 的结束时间即为 TTI。
  • 如果没有找到 Long Task,以起始点时间作为 TTI。
  • 如果 2、3 步骤得到的 TTI < DOMContentLoadedEventEnd,以 DOMContentLoadedEventEnd 作为TTI。

SPA 路由切换场景

算法描述:

  • 从起始点开始(一般选择「客户端路由开始」的时间),向前搜索一个不小于 5s 的静默窗口期。
  • 找到静默窗口期后,从静默窗口期向后搜索到最近的一个 Long Task,Long Task 的结束时间即为 TTI。
  • 如果没有找到 Long Task,以起始点时间作为 TTI。

浏览器兼容性说明

  • TTI 指标要求浏览器支持 Long Tasks API 和 Resource Timing API,在浏览器不兼容的情况下,不上报 TTI 指标(不会对数据统计造成影响)。

如何优化 TTI 指标

优化 TTI 指标,关键是缩短页面加载过程中,JS 代码的执行时间。常见的优化方法有:

  • 合理进行代码分片。
  • 精简 JS 逻辑,移除无用代码。
  • 合理缓存 JS 文件。

参考资料
https://docs.google.com/document/d/1GGiI9-7KeY3TPqS3YT271upUVimo-XiL5mwWorDUD4c

http://www.lryc.cn/news/317170.html

相关文章:

  • 大模型交互-超拟人合成
  • 第十四届蓝桥杯蜗牛
  • 分布式定时任务调度xxl-job
  • 自动化运维利器Ansible基础(环境部署)
  • 微服务自动化管理初步认识与使用
  • 使用Docker管理linux容器
  • CTR之行为序列建模用户兴趣:DIEN
  • 1960-2020年全球双边迁移数据库(Global Bilateral MigrationDatabase)
  • OpenGL-贴纸方案
  • 【性能测试】移动测试md知识总结第1篇:移动端测试课程介绍【附代码文档】
  • Vue2和vue3的区别(前端面试常见问题)
  • openGauss学习笔记-241 openGauss性能调优-SQL调优-审视和修改表定义
  • PDFPlumber解析PDF文本报错:AssertionError: (‘Unhandled’, 6)
  • 51WORLD正式落地中东,助力沙特伙伴与客户数字化升级!
  • 嵌入式学习38-数据库
  • 去除PDF论文行号的完美解决方案
  • 《ElementPlus 与 ElementUI 差异集合》icon 图标使用(包含:el-button,el-input和el-dropdown 差异对比)
  • 力扣题库第8题:去重后的最长子串
  • CSS样式中长度单位含义解析:rpx、px、vw、vh、em、rem、pt
  • 全国车辆识别代码信息API查询接口-VIN深度解析
  • python django 模型中字段设置blank, null属性值用法说明
  • 暴雨信息:可持续转型更需要“以人为本”
  • 1.2_3 TCP/IP参考模型
  • 真空泵系统数据采集远程监控解决方案
  • Python语言在编程业界的地位——《跟老吕学Python编程》附录资料
  • 基于Redis自增实现全局ID生成器(详解)
  • hadoop 总结
  • luatos框架中LVGL如何使用中文字体〈二〉编写脚本设置中文字体
  • c++单例模式和call_once函数
  • AutoMQ 携手阿里云共同发布新一代云原生 Kafka,帮助得物有效压缩 85% Kafka 云支出!