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技术普及,页面效果越来越炫,复杂度也越来越高,纯粹的资源加载速度已经不是最大的痛点了,资源的加载时机,用户的交互体验又成了最大的痛点了,性能优化难度也越来越大,单独任何一个技术端的优化都也很难优化出满意的整体效果,这就凸显从前端到后端再到浏览器内核各端的技术数据拉通显得越来越有必要了。

时间: 2024-09-29 05:13:24

U4 内核首屏性能的定义及统计指标的相关文章

知名网站的首屏简洁设计趋势

  当一个用户登录你的网站,他第一件事情一定会注意到你的网站的头部信息.无论他是一个小的导航栏,或者是一个大的图片全屏轮显,网站头部的设计无疑是全站布局中非常重要的一个环节.大多数网站头部的设计倾向于给访问者留下非常深刻的印象并且最好能够更帮助他更好的推广这个网站的品牌.一个好的网页首屏设计可以给每一位访问者留下一个长久的不可磨灭的印象. 在这篇文章里,我想分享几个非常有用的小技巧来帮助网页设计师们实现一个高大上的头部标题设计.最好的方法就是把侧重点集中到网站的内容上,并且着重强调重要的部分,使

移动 H5 首屏秒开优化方案探讨

随着移动设备性能不断增强,web 页面的性能体验逐渐变得可以接受,又因为 web 开发模式的诸多好处(跨平台,动态更新,减体积,无限扩展),APP 客户端里出现越来越多内嵌 web 页面(为了配上当前流行的说法,以下把所有网页都称为 H5 页面,虽然可能跟 H5 没关系),很多 APP 把一些功能模块改成用 H5 实现. 虽然说 H5 页面性能变好了,但如果没针对性地做一些优化,体验还是很糟糕的,主要两部分体验: 页面启动白屏时间:打开一个 H5 页面需要做一系列处理,会有一段白屏时间,体验糟糕

移动H5首屏秒开优化方案探讨

随着移动设备性能不断增强,web 页面的性能体验逐渐变得可以接受,又因为 web 开发模式的诸多好处(跨平台,动态更新,减体积,无限扩展),APP 客户端里出现越来越多内嵌 web 页面(为了配上当前流行的说法,以下把所有网页都称为 H5 页面,虽然可能跟 H5 没关系),很多 APP 把一些功能模块改成用 H5 实现. 虽然说 H5 页面性能变好了,但如果没针对性地做一些优化,体验还是很糟糕的,主要两部分体验: 页面启动白屏时间:打开一个 H5 页面需要做一系列处理,会有一段白屏时间,体验糟糕

如何让App首屏启动更快 -- httpdns持久化缓存方案

首屏启动之痛 对于大部分app而言,首屏启动是最为关键的场景之一,一旦出现阻塞将直接影响到用户体验,为此阿里云httpdns sdk推荐异步接口getIpByHostAsync来获取ip,其大致过程如下: 用户从调用getIpByHostAsync接口大致会经历: 内存缓存检查 ip合法性检查 异步httpdns请求 从流程中可以看出,由于httpdns请求是异步的,对于app首屏场景来说,httpdns可能正在解析途中,app在解析结果返回前会拿到空的ip,转而去做Local DNS解析. 解

网页首屏设计之图文混排的10大技巧

  1.强化对比 Packdog Wearetelegraph 首先网页首屏中的文字必须具备可读性才行,所以你需要确认文字与背景之间的色彩搭配能让用户看得清楚.当你选择一个暗色调的背景,那么你需要使用白色或者浅色的的文字,而当背景比较素雅的时候,文字可以使用深色,这就是我所说的强化对比. 当然,对比不仅限于色彩,文字同样存在对比.文字与图像相互配合,才能达到出人意表的效果.例如第一个案例,Packdog网站的设计,大图作为背景,用色浓郁,文字则正好相反,轻薄而大小错落.这些对比强烈的元素组合在一

设计稿标注首屏线的确定始末

这是内部的一个邮件记录,分享出来听下业内同行的声音. 事情是这样的.. == 先是 A 推荐了白鸦的推到内部群: "设计师们一定要养成一个习惯:无论是原型设计还是视觉设计,一定要标注一下首屏线,明确首屏需要.可以显示到哪里." == 然后,B 觉得这点子不错,根据内部统计系统中的操作系统.浏览器分布和屏幕分辨率等数据,结合浏览器状态栏.任务栏等高度进行分析: 得出两条首屏线,分别为 580 和 710,对应不同的分辨率. == C 再从实际用户的角度出发,在某应用布点进行用户数据的收集

设计师养成习惯:一定要标注首屏线

文章描述:设计师们一定要养成一个习惯:无论是原型设计还是视觉设计,一定要标注一下首屏线,明确首屏需要.可以显示到哪里. 这是内部的一个邮件记录,分享出来听下业内同行的声音. 事情是这样的.. == 先是 A 推荐了白鸦的推到内部群: "设计师们一定要养成一个习惯:无论是原型设计还是视觉设计,一定要标注一下首屏线,明确首屏需要.可以显示到哪里." == 然后,B 觉得这点子不错,根据内部统计系统中的操作系统.浏览器分布和屏幕分辨率等数据,结合浏览器状态栏.任务栏等高度进行分析: 得出两条

网页设计技巧之网页首屏高度如何确定?

一个经验丰富的网页设计师在做网页原型设计或者视觉效果图时,首先必须要做的是标注清楚网站首屏的高度线,以便直观的看到网站首屏的高度,首屏可以显示的元素.那么,我们该如何来标注一个网页的首屏线那?笔者结合网上的一些谈论特整理如下: 首屏的高度直接跟客户端的各种客观的条件有关系,因为我们要确定首屏的高度(标注首屏线)就需要结合一些相对准确的内部统计数据来分析了,根据各个客户端的操作系统.浏览器分布和屏幕分辨率等情况,并结合常见浏览器状态栏.任务栏等高度进行分析如下: 第一步:分析常见分辨率及浏览器下高

怎样设计极具吸引力的首屏大图

  当下网页设计最重大的一项趋势,就是大图片的使用.不只是大,这些巨幅图片看上去就像在屏幕上活过来一样.用在页面顶部时,就是我们常说的首屏大图. 如何利用这一趋势?需要从哪些工具入手?本文中,我们来看看这些首屏大图.用好它们的诀窍.熟练掌握这一趋势优秀网页案例,甚至还有可供下载研究的赠品. 什么是首屏大图? 首屏大图,就是在首页或其他页面顶部,运用焦点图.文字和导航元素.首屏大图体现为多种形式--作为一张图片或带文字的图.图片轮播.固定图片.视频或是动态图片.设计风格也囊括写实与手绘. 焦点图片