U4 内核首屏性能的定义及统计指标

简介:

前言

Web 开发者为了了解或则统计自己站点的性能,可以通过浏览器标准接口 Navigation Timing API 来获取一些页面性能上的相关耗时数据,如 requestStart,domComplete 等。但是仅仅这些数据还无法准确反映页面的真实性能,特别是移动Web所注重的首屏性能。于是就有了一些通过 domComplete 时间,页面加载完成时间等作为参考的性能体系,这些参考体系并不完全准确,并非用户角度真正意义上的首屏。

首屏性能定义

首先说一下什么是首屏性能:

移动 Web 页面受网速和终端手机性能影响,用户通常会比较关注页面内容完全显示出来的时间,过长的时间会极大考验用户的耐心,这个时间的长短是影响用户体验的关键因素之一,很大程度上决定着用户的去与留。

一个页面的加载性能怎么样,就是看从开始加载到首屏内容显示出来需要经需要多长时间,所以就有了首屏性能这个指标来衡量页面的加载性能。

UC的首屏性能评估体系

UC 在手机浏览器领域耕耘多年,她是怎么来衡量页面加载性能的呢,又有哪些指标体系,今天就来为大家解读一下。

用户从点击到首屏渲染完成主要路径如下图:

说明:

  • start:blink 内核开始创建请求的时间;
  • t0:blink 收到 http head 的时间;
  • t1:首屏有内容显示的时间;
  • t2:首屏全部显示出来的时间;

自然而然 UC 也是使用首屏性能来衡量各站点的性能情况,UC 对首屏性能的定义是从用户使用的角度来定义的,即:首屏加载完成时间是以页面首屏区域所要显示的资源已经全部显示出来的时间为准,该时间点也被定义为 t2 时间点。

当然用户能直接感受到的性能指标除了 t2 还有 t1,UC 内核对 t1 的定义:页面首次有内容显示的时间。t1 在UC使用了多年,在以前弱网络占比较高的时代,t1 在还是有其比较大的性能衡量价值,目前也还在继续沿用。鉴于目前国内的网速提高很快,t1 衡量的权重已没弱网络时代那么高了,衡量体系已经快速偏向 t2, UC内部的自有业务性能衡量目前都是在采用 t2 来衡量性能。

t2 即首屏是否渲染完成的判断是一个相当复杂的工作,所以到目前为止现有其他浏览器都没有真正首屏渲染完成的事件,包括 Chrome。在首屏性能相关的一些打点统计中,包括以前的 t1 和现在的 t2,UC 一直走在 Chrome 前面,当然目前 Chrome 也在这块发力,Chrome 在较新版本内核开始支持 First Meaningful Paint,据他自己的描述大概准确率 75% 左右。

UC 内核的 t2 计算是采用自己创新的一套算法,从渲染层次去计算何时页面首屏渲染完成,简单来说就是根据页面内容以及图片资源加载渲染的情况做出判断给出一个合理且较准确的时间值,所以计算出来的值非常贴近用户的实际感受,因为是在内核渲染层级代码实现的统计,所以带来的性能消耗也相对较小,在可控范围内。

该统计方法通过抽取线上 1000 个 TOP 移动站点的页面,再经过 UC 内部的 WPT 测试工具对比验证,准确率和覆盖率可达 85% 以上。

UC首屏性能统计指标 API 扩展

目前,我们已在最新发布的 Android UC 浏览器 11.5.0.939 版本扩展了性能统计指标 API,在现有的 ucweb.window 对象下增加了 performance 对象来提供 t0、t1、t2 接口,新增加一个自定义事件 BacktracePaintReady,脚本通过注册监听该事件,当收到事件通知时则可获取t0、t1、t2 的值,单位为 ms。

该自定义事件通知在切换页面(前进、后退、刷新、关闭页)的时候触发,获取到的 t0、t1、t2 必须采用 navigator.sendBeacon 方法上传。

调用方法示例代码:

window.ucweb.window.addEventListener('BacktracePaintReady', function (){
  var t = window.ucweb.window.performance;
  var data = {t0: t.t0, t1: t.t1, t2: t.t2};
  var blob = new Blob([JSON.stringify(data, null, 2)], {type: 'application/json'});
  navigator.sendBeacon('http://yourwebsite.com', blob);
}, false); 

性能优化的方向

所以,前端性能问题首先是统计问题,只有采取了恰当的统计方法,收集到准确的统计数据,我们才可以更加准确量化优化的效果。

Web 页面性能优化绝不是浏览器内核或业务页端单方面的事情。通常情况下业务对内核的实现不了解,某些情况下为了实现某个功能点,需要靠猜,靠验证,费时费力,且不一定能达到效果。而内核侧通常情况下离业务比较远,对页端惯用的技术或则方法并不一定完全了解,其性能优化的思路更多的是从内核本身的角度去考虑,实际不一定贴合业务,体现不出价值,甚至都不知道还有什么优化空间。

在弱网络时代,性能优化的重要方向之一就是怎么样提高加载速度,更多的是依赖缓存,预连接,资源加载控制等手段来优化加载性能。而在快速网络的时代,随着Web技术的发展,H5技术普及,页面效果越来越炫,复杂度也越来越高,纯粹的资源加载速度已经不是最大的痛点了,资源的加载时机,用户的交互体验又成了最大的痛点了,性能优化难度也越来越大,单独任何一个技术端的优化都也很难优化出满意的整体效果,这就凸显从前端到后端再到浏览器内核各端的技术数据拉通显得越来越有必要了。

目录
相关文章
|
Web App开发 Android开发 iOS开发
iOS 调试:通过 Safari/Chrome 调试 WebView
iOS 调试:通过 Safari/Chrome 调试 WebView
11641 123
iOS 调试:通过 Safari/Chrome 调试 WebView
|
5月前
|
机器学习/深度学习 存储 人工智能
还在手写Skill?hermes-agent 让 Agent 自己进化能力
Hermes-agent 是 GitHub 23k+ Star 的开源项目,突破传统 Agent 依赖人工编写Aegnt Skill 的瓶颈,首创“自我进化”机制:通过失败→反思→自动生成技能→持续优化的闭环,让 Agent 在实践中自主构建、更新技能库,持续自我改进。
3998 8
|
11月前
|
安全 物联网 API
Windows 11 25H2 | 24H2 | 23H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 10 月更新)
Windows 11 25H2 | 24H2 | 23H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 10 月更新)
28724 1
Windows 11 25H2 | 24H2 | 23H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 10 月更新)
|
6月前
|
XML 人工智能 JSON
AI 再也不用截图点点点了!用一行命令让它直接画流程图
还在让 AI 用截图点 GUI 画流程图?慢、脆、还经常点错地方。 cli-anything-drawio 把 draw.io 的所有操作变成 CLI 命令, AI Agent 调一行命令就能生成专业流程图、架构图、组织架构图, 结果直接导出 PNG,全程不需要人盯着。
1538 6
|
10月前
|
Web App开发 前端开发 JavaScript
前端说后端只是crud 后端说前端只是写界面。如何看待?
前后端开发各有难点:CRUD重逻辑深度,挑战系统稳定性与数据一致性;界面开发重感知广度,追求交互流畅与用户体验。二者难度无法简单比较,真正难题在于如何将复杂后端通过优雅界面简洁呈现,需团队协作与相互理解。
438 8
|
机器学习/深度学习 存储 算法
Trinity-RFT:构建智能体持续学习的自动化强化微调工厂
大型语言模型作为智能体在真实环境中持续交互学习面临诸多挑战。 Trinity-RFT 是通义实验室推出的强化微调框架,旨在实现智能体的持续进化。它通过探索、训练与经验池的解耦设计,支持多样化训练模式,提升资源利用率和学习稳定性。同时,Trinity-RFT 提供灵活的数据处理与算法模块化功能,降低应用与研究门槛,助力迈向终身学习与自主进化的智能体时代。
1186 2
|
开发工具 git
|
人工智能 机器人 开发工具
快速部署 Flowise 社区版
FlowiseAI 是一个开源的低代码开发工具,专为开发者构建定制的语言学习模型(LLM)应用而设计。 通过其拖放式界面,用户可以轻松创建和管理AI驱动的交互式应用,如聊天机器人和数据分析工具。 它基于LangChain框架,支持与多种AI模型和数据库集成,实现高度可定制化的流程自动化​。本文介绍通过计算巢快速部署Flowise社区版服务。
快速部署 Flowise 社区版
|
Shell Windows
vscode添加gitbash终端(最新)
vscode添加gitbash终端(最新)
2513 1
|
缓存 安全
预检请求(Preflight Request)
预检请求(Preflight Request)
1107 3