31 | 工欲善其事必先利其器:前端性能测试工具原理与行业常用工具简介

WebPagetest 功能简介

WebPagetest,是前端性能测试的利器:

  • 可以为我们提供全方位的量化指标,包括页面的加载时间、首字节时间、渲染开始时间、最早页面可交互时间、页面中各种资源的字节数、后端请求数量等一系列数据;

  • 还可以自动给出被测页面性能优化水平的评价指标,告诉我们哪些部分的性能已经做过优化处理了,哪些部分还需要改进;

  • 同时,还能提供 Filmstrip 视图、Waterfall 视图、Connection 视图、Request 详情视图和页面加载视频慢动作。

WebPagetest 为我们提供了前端页面性能测试所需要的一切,而且还是免费的。

使用 WebPagetest 测试某网站的首页

官网:

http://www.webpagetest.org/

WebPagetest 的测试执行界面

WebPagetest 的测试结果页面

前端性能评估结果评分

第一,First Byte Time

First Byte Time,指的是用户发起页面请求到接收到服务器返回的第一个字节所花费的时间。这个指标反映了后端服务器处理请求、构建页面,并且通过网络返回所花费的时间。

第二,Keep-alive Enabled

页面上的各种资源(比如,图片、JavaScript、CSS 等)都需要通过链接 Web 服务器来一一获取,与服务器建立新链接的过程往往比较耗费时间,所以理想的做法是尽可能重用已经建立好的链接,而避免每次使用都去创建新的链接。

Keep-alive Enabled 就是,要求每次请求使用已经建立好的链接。它属于服务器上的配置,不需要对页面本身进行任何更改,启用了 Keep-alive 通常可以将加载页面的时间减少 40%~50%,页面的请求数越多,能够节省的时间就越多。

第三,Compress Transfer(压缩传输)

如果将页面上的各种文本类的资源,比如 Html、JavaScript、CSS 等,进行压缩传输,将会减少网络传输的数据量,同时由于 JavaScript 和 CSS 都是页面上最先被加载的部分,所以减小这部分的数据量会加快页面的加载速度,同时也能缩短 First Byte Time。

为文本资源启用压缩通常也是服务器配置更改,无需对页面本身进行任何更改。

第四,Compress Images

为了减少需要网络传输的数据量,图像文件也需要进行压缩处理。

渐进式 JPEG(Progressive JPEG)技术

第五,Cache Static Content

一般情况下,页面上的静态资源不会经常变化,所以如果你的浏览器可以缓存这些资源,那么当重复访问这些页面时,就可以从缓存中直接使用已有的副本,而不需要每次向 Web 服务器请求资源。这种做法,可以显著提高重复访问页面的性能,并减少 Web 服务器的负载。

第六,Effective use of CDN

CDN 是内容分发网络的缩写,其基本原理是采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区的网络供应商机房内,当用户访问网站时,利用全局负载技术将用户的访问指向距离最近的、工作正常的缓存服务器上,由缓存服务器直接响应用户请求。

其他前端性能指标解读

第一,Start Render

Start Render,指的是浏览器开始渲染的时间,从用户角度看就是在页面上看到第一个内容的时间。该时间决定了用户对页面加载快慢的的第一直观印象,这个时间越短用户会感觉页面速度越快,这样用户也会有耐心去等待其他内容的展现。如果这个时间过长,则用户会在长时间内面对一个空白页面后,失去耐心。

第二,First Interactive

First Interactive,可以简单地理解为最早的页面可交互时间。页面中可交互的内容,包括很多种类,比如点击一个链接、点击一个按钮都属于页面可交互的范畴。First Interactive 时间的长短对用户体验的影响十分重要,决定着用户对页面功能的使用,这个值越短越好。

第三,Speed Index

严格来说,Speed Index 是通过微积分定义的。我们理解起来会比较困难,所以在这里我们和你只做定性的讨论。

通常,影响网页性能体验的一个重要指标是页面打开时间。打开时间越短,其体验越好。但是,当存在两个打开时间完全相同的网站 A 和 B 时,其中网站 A 的打开过程是逐渐渲染页面完成的,而网站 B 的打开过程则是空白了一段时间后在短时间内完成页面渲染完成的。

毫无疑问,网站 A 的用户体验一定好于 B。Speed Index 就是用来衡量这种体验的,通常来讲,它的值越小越好。

WebPagetest 实际使用中需要解决的问题

  • 第一个问题是,如果被测网站部署在公司内部的网络中,那么处于外网的 WebPagetest 就无法访问这个网站,也就无法完成测试。要解决这个问题,你需要在公司内网中搭建自己的私有 WebPagetest 以及相关的测试发起机。具体如何搭建,你可以参考WebPagetest 官网的建议。

  • 第二个问题是,用 WebPagetest 执行前端测试时,所有的操作都是基于界面操作的,不利于与 CI/CD 的流水线集成。要解决这个问题,就必须引入 WebPagetest API Wrapper。

猜你喜欢

转载自www.cnblogs.com/Uni-Hoang/p/13381285.html