前端性能分析工具和指标

性能指标和优化目标之:加载

性能指标:我们在性能优化过程中可以参考的标准。这些标准都是业界或者前人总结出来的指导性经验。我们可以参考这些指标,去指导我们自己的优化。

打开网站的初体验

我们以淘宝网站为例,按下F12打开浏览器的调试模式。

上图中,鼠标右键点击“刷新”图标(或者鼠标长按刷新图标,松开鼠标后),会弹出三个选项,我们选择最后一个选项“清空缓存并硬性重新加载”。

补充:这三个选项都是在调试模式下(按下F12弹出调试面板)才会出现的。

浏览器的DevTools初印象:

上图中,打开 chrome 调试工具,点开「设置」icon,下面的四个选项中,除了“Group by frame”之外,其他的三个选项都可以勾选上。

我们可以看到淘宝网站的一些指标:

  • 总资源量是 1.3M。
  • DOM加载完成时间(DOMContentLoaded):511ms。这是一个很关键的指标。
  • 其他资源的总加载时间是 1.05秒。

我们再来对比一下京东的:

保存快照

network里的信息挺多,我们可以将其保存下来,留着以后做分析、做对照。

如上图所示,我们可以在 network 的空白处右键,选择“Save all as HAR with content”,将 network 信息保存为 HAR文件格式。

HAR是一种标准的Web格式,用户保存性能测试的结果。里面的数据是json格式。

我们可以使用第三方的 HAR 分析软件来打开 HAR 文件,比如:

注意,HAR 文件包含了一些敏感信息:

瀑布图 Waterfall

瀑布图可以非常直观地把网站的加载过程,用自上而下的方式表达出来,就像瀑布一样。

瀑布图有两中解读方式:一种是横向看,一种是纵向看。

1、横向看

横向看的是具体的资源,每一行代表某个资源的加载信息。里面有一些色块来表达加载的过程,每个块的颜色不同。也就是说资源的下载不是单一的过程,而是经历了很多环节。

为了了解资源的具体加载过程,我们把鼠标悬浮在第一个资源的色块上,可以看见一个详情列表:

(1)等待:

  • Queueing:排队。浏览器会对资源的请求做优先级排序。

(2)连接:

  • DNS Lookup:DNS域名解析。每个资源都有域名,对域名做DNS解析,然后找到对应服务器的IP地址。

  • initial connection:客户端和服务器之间建立TCP连接。

  • SSL证书:该网站为了保证安全性,使用了 https 协议,启用了SSL证书。启用之后,需要做安全认证(SSL协商),这个过程也会耗时。到这里位置,我们可以看到,在请求资源之前,有很多的前置步骤。

(3)请求和响应:

  • Request sent:到这一步,真正开始请求资源。

  • Waiting(TTFB):资源从请求到响应,有一个等待的时间。

  • Content Download:收到响应后,资源的下载时间。如果值越大,表明下载时间越长。有些同步加载的资源会造成阻塞,导致网页的整体加载时间过长,让用户等待太久。

TTFB 是一个很重要的指标,它表示的是:请求发出到响应,到底要经历多久。TTFB 可以给我们一个很直观的感受,我们网站的请求和响应到底是快还是慢,很大程度上是由 TTFB 决定。

影响 TTFB 的因素是什么呢?比如:

  • 后台的处理能力的响应速度。

  • 网络状况:是否有网络延迟。

2、纵向看:(主要看两点)

(1)看资源与资源之间的联系:如果发生阻塞,说明资源可能是串行地按顺序加载。可以按需要适当调整为并行

(2)看关键的时间节点。Waterfall 中有两根时间线:蓝色的线是 DOM 加载完成的时间,红色的线是所有资源加载完成的时间。

性能指标和优化目标之:交互

上面的内容讲的是加载的性能,还有一个需要关注的性能指标是交互。也就是网站加载完成后,用户真正开始使用这个网站过程中的的交互体验。

关于交互体验的性能,我们需要关注的是:

  • 交互动作的响应时间要短:比如点击按钮后的弹窗、在搜索框里输入关键字后的搜索结果。

  • 页面滚动要流畅:可以查看 FPS 帧率。

  • 异步请求接口的完成时间要短:比如关注/取关主播的响应、领取红包的操作。

FPS帧率、FRS

这里首先科普两个概念:

  • 刷新率:显示器每秒有多少帧画面。大多数显示器的刷新率是60帧/秒(即60hz)。
  • 帧率(FPS:frames per second):视频或者动画的内容本身,每秒有多少帧。由显卡输出帧率。

上面的两个参数中,不要把「刷新率」和「帧率」弄混了。「刷新率」是屏幕的参数,「帧率」是图像、视频等内容的参数。人眼最终看到的效果,是以最低的参数为准的。

目前,市场主流手机和电脑屏幕的刷新率基本都是60Hz,即每秒显示60帧画面。也就是说,当我们在使用手机的时候,本质上是手机在连续播放一张张静态图片,每秒播放60张,让肉眼误认为眼前的画面在动。

持续滑动的过程中,如果页面输出到显示器的帧率低于60帧/秒,则人眼会感觉卡顿。

那么,在浏览器中如何实时显示内容的 FPS 参数呢?打开浏览器的控制台后,按住快捷键「Cmd + Shift + P」,然后输入 frame,选择Show frames per second(FPS) meter。如下:

温馨提示

从 2020年7月起,chrome 官方已经取消了 fps参数的显示,改为了 FRS

FRS参数观察的是丢帧率:

Chrome官方给我们提供了下面这个网站,用于观察 FPS 效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值