我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【性能优化】性能测量工具-WebPageTest

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【性能优化】性能测量工具-WebPageTest

Chrome DevTools Performance 主要用于日常开发过程中分析运行时的性能表现。

Lighthouse 用来生成网页的性能评测报告。

WebPageTest 用来进行整体的网站质量评估、一站式性能评估。

有了这3个工具我们就可以从多个维度对网站性能进行全方位的评估。

性能测量工具-WebPageTest

WebPagetest的核心是用于测量和分析网页的性能。它是 google 开源项目《make the web faster》的子项目,它本来是 AOL 内部使用的工具,后来在2008年基于BSD开源。

官方网址:http://www.webpagetest.org/

原理

WebPageTest是一个PHP网站,用户输入网址、地点、自定义脚本等信息后,参数发送到后台。后台做些逻辑处理,再通过浏览器相关的代理程序,启动Chrome、Firefox或IE。浏览器执行完后将数据传回给后台,后台再将数据保存起来,最后通过各种形式(图、表格、列等),将分析数据过的数据,呈现给用户。

导航栏

首先打开WebPageTest 官网,可以看到如下界面:

  1. Test History:能查看到测试历史记录。
  2. API:webgetest API Key 允许开发人员在其工作流中自动执行性能测试,以不断提供更快的网页。WebPageTest 支持的扩展开发,只要申请到一个key后,就可以根据提供的API做开发。不过调用次数都会有限制,所以如果要做还是在自己本地或内网布置一个WebPageTest的环境。
  3. Forums:论坛信息,里面有许多提问和回答,覆盖面非常广。
  4. Docs:英文版工具文档,中文文档可以参照这个网址 https://github.com/pwstrick/WebPagetest-Docs
  5. Blog:博客,里面是一些 WebpageTest 的一些最佳实践方案等
  6. About:给出了WebPageTest的Github地址,以及发布版的下载地址等信息。

基本使用

基础配置

  1. 输入网页网址:确定要测试的页面后,转到WebPagetest并为其指定要测试的页面的URL,这个地址可以是首页也可以是详情页。
  2. 选择地理位置:WebPagetest具有位于世界各地的测试机器,你应该从接近用户访问的位置进行测试,从列表中选择一个位置,或者单击Select from Map按钮,从地图视图中选择一个位置(只需单击气球🎈,然后确定)
  3. 选择浏览器:不同的位置支持不同的浏览器,如果给定的位置没有正在寻找的浏览器,可以尝试不同的位置。通常建议使用chrome浏览器。

高级配置

  1. 运行测试次数:为保证测试结果的准确性,每次运行都会测试多次
  2. 是否重复访问:因为重复访问会优先走缓存,所以结果可能会有差别
  3. 提交测试:一切配置完成后,点击Start Test按钮,请求将发送到测试位置进行测试。测试可能需要一段时间才能运行,具体取决于有多少次测试(在测试之前至少有一分钟的测试时间,但是它的时间甚至更长)。一旦测试完成,你将得到结果。

本地部署

官网中只能测试一些外网能访问的网站,但是往往开发过程中有些项目我们都发布在公司内部的局域网内,所以就需要将WebPagetest部署到本地,使用本地的网络环境来测试性能。

注意:这里提到的本地部署,是指本地局域网内服务器上部署的网站,不是本地电脑的locallhost,因为在本地测试locallhost往往是不准确的,因为大多数情况下,本地开发调试的页面都是webpack dev sever服务器,资源没有经过压缩,所以加载速度也会很慢,和线上环境的结果往往会大相径庭。

具体步骤如下:

下载并安装docker镜像,下载地址 https://docs.docker.com/get-docker/

为什么安装docker镜像?docker类似于一个虚拟机,在虚拟机上下载WebPageTest的镜像,我们就是不需要独立安装WebPageTest这个软件了,这样可以不受系统限制,完全独立出一套虚拟的环境,通过端口映射到本地服务。

拉取镜像

  1. docker pull webpagetest 
  2. docker pull webpagetest/agent 

运行server实例

  1. docker run -d -p 4000:80 webpagetest/server 

运行agent实例

  1. docker run -d -p 4000:80 --network="host" -e "SERVER_URL=http://localhost:4000/work/" -e "LOCATION=Test" webpagetest/agent 

访问http://localhost:4000,会看到 WebPagetest 官网一样的页面,在这个页面中输入本地其它端口的网址,我们就可以测试本地服务的性能了。

结果分析

优化等级

在结果页面的顶部是一组最关键的性能优化等级。涵盖了适用于所有网站的基本优化,任何不是A或B的都需要进行进一步的优化.

性能指标总结

结果页顶部的数据表提供了有关已加载页面的一些高级信息,其中首次和重复访问视图的指标都有清晰的看到首次和重复视图访问的结果。

首次视图(First View):首次视图的测试,将会把浏览器的缓存和Cookie清除,表示访问者第一次访问该网页将体验到的情况。

重复视图(Repeat View):重复视图会在首次视图测试后立即执行,不会清除任何内容。浏览器窗口在First View测试后关闭,然后启动新浏览器以执行Repeat View测试。重复视图测试模拟的是用户离开页面后,马上再进入此页面的场景。

除此之外,这里介绍几个关键指标:

  1. 首字节时间(Time To First Byte):首字节时间(通常缩写为TTFB)指的是被测量为从初始化请求,到服务器响应的第一个字节,被浏览器接收的时间(不包括DNS查询、TCP连接的时间)。
  2. 页面渲染时间(Start Render):测量的时间是从初始化请求,到第一个内容被绘制到浏览器显示的时间。Start Render是通过捕获页面加载的视频,并在浏览器第一次显示除空白页之外的其他内容时查看每个帧来衡量的。它只能在实验室测量,通常是最准确的测量。
  3. 速度指数(Speed Index):速度指数是一个计算的指标,用来衡量页面渲染用户可见内容的迅速程度(越低越好)。关于计算方法的更多信息,请点击此处查看。
  4. 阻塞交互时间(Total Blocking Time):是指页面阻塞,用户不能进行交互的累计时间,这里可以看到二次访问时资源缓存减少了阻塞时间。
  5. 文档加载完毕(Document Complete):从初始化请求,到加载所有静态内容(图片、CSS、JavaScript等),但可能不包括由JavaScript执行触发的内容,可以理解为开始执行window.onload。
  6. 页面所有元素加载时间(Fully Loaded):指的是从初始化请求,到Document Complete后,2秒内(中间几百毫秒轮询)没有网络活动的时间,但这2秒是不包括在测量中的,所以会出现两个差值大于或小于2秒。

首字节加载时间和首字节时间的区别

首字节加载时间(First Byte Time):是指浏览器收到HTML内容的第一个字节时间,包括DNS查找、TCP连接、SSL协商(如果是HTTPS请求)和TTFB。

首字节时间 TTFB(Time To First Byte):首字节是指被测量为从初始化请求,到服务器响应的第一个字节,被浏览器接收的时间(不包括DNS查询、TCP连接的时间)。我理解TTFB的计算是从下图中requestStart到responseStart这之间的时间,也就是请求发送出去的时间。

所以,首字节加载时间 = DNS查找时间+TCP连接时间+SSL协商时间+TTFB请求发送出去的时间

waterfall chart 请求瀑布图

在结果页的下方我们可以看到每次运行显示的瀑布图,点击进去可以看到具体的参数详情,如下图所示:

在这张图上我们可以看到所有的请求资源都列举了出来,里面的信息比 Chrome DevTools给出的信息更加详细,例如下方的几个指标:

  1. Browser Main Thread:浏览器主线程占用情况,什么时间比较忙
  2. Long Tasks:长任务时间,也就是页面的科技可交互时间,红色区域代表阻塞时间
  3. Bandwidth In:带宽
  4. CPU Utization:CPU占用情况

除此之外,在下图中我们还可以看到一些优化的点,比如42-50这些并行请求的图片资源减少了资源加载时间,还有57-58黄色高亮部分资源发生了重定向,WebpageTest 提示我们这里资源发生了变化,可以优化为不进行资源重定向。

总结

  1. WebpageTest的使用方式:访问官网测试、安装本地镜像测试
  2. WebpageTest的关键指标:首字节时间(First Byte)、页面渲染时间(Start Render)、速度指数(Speed Index)、阻塞交互时间(Total Blocking Time)、文档加载完毕(Document Complete)、页面所有元素加载时间(Fully Loaded)
  3. 首字节加载时间 = DNS查找时间 + TCP连接时间 + SSL协商时间 + TTFB请求发送出去的时间

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【性能优化】性能测量工具-WebPageTest

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【性能优化】性能测量工具-WebPageTest

WebPagetest的核心是用于测量和分析网页的性能。它是 google 开源项目《make the web faster》的子项目,它本来是 AOL 内部使用的工具,后来在2008年基于BSD开源。

【性能优化】性能测量工具-LightHouse

Lighthouse是Google开发的一款开源工具,提供一套全面的测试来评估网页质量,包括加载性能、可访问性、最佳实践和PWA。在chrome 60之后的版本,DevTool里已经内置了Lighthouse。

【性能优化】性能测量工具-Chrome DevTools Performance

运行时性能表现(runtime performance)指的是当你的页面在浏览器运行时的性能表现,而不是在加载页面的时候的表现。本文将会告诉你怎么用Performance 工具去分析运行时性能表现。

C#中如何使用性能测试工具和性能优化技巧

C#中如何使用性能测试工具和性能优化技巧,需要具体代码示例性能优化在软件开发过程中起着非常重要的作用,它可以提高系统的性能、运行速度和响应能力。C#是一种高性能的编程语言,也有许多性能优化技巧和工具可以帮助我们更好地利用C#的优势。本文将介
2023-10-22

SQL Server性能优化工具Profiler

SQL Server Profiler是一个界面,用于创建和管理跟踪并分析和重播跟踪结果。 这些事件保存在一个跟踪文件中,稍后试图诊断问题时,可以对该文件进行分析或用它来重播一系列特定的步骤。

Golang 技术性能优化中如何整合性能优化工具?

Golang 技术性能优化中整合性能优化工具在 Golang 应用中,性能优化至关重要,而借助性能优化工具可以极大地提升此过程的效率。本文将指导您逐步整合流行的性能优化工具,以帮助您对应用程序进行全面的性能分析和优化。1. 选择性能优化
Golang 技术性能优化中如何整合性能优化工具?
2024-05-12

PHP 函数性能优化自动化工具

php函数性能优化自动化工具通过分析函数性能,帮助快速识别和修复性能瓶颈。工具可用composer安装,并可通过functionprofiler类进行使用。分析结果包括函数执行时间、内存使用情况和调用次数,以及瓶颈函数列表。通过案例演示,该
PHP 函数性能优化自动化工具
2024-04-11

通过Go语言实现的压测工具优化性能

通过Go语言实现的压测工具优化性能随着互联网应用的不断发展,对于Web服务的高并发处理能力要求也越来越高。压测是一种测试系统在各种条件下的性能的方法,可以模拟多个用户同时访问系统,从而测试系统在高并发情况下的性能表现。在这篇文章中,我们将
通过Go语言实现的压测工具优化性能
2024-03-10

推荐几个 React 性能优化工具

Profiler 是 React 中的一个组件,由 B. Vaughn 开发,它可以测量 React 应用渲染的频率和渲染所花费的时间资源。Profiler 提供一个函数属性 onRender,当组件 mount 或者 update 的时候

Android性能测试工具:Emmagee

Emmagee是监控指定被测应用在使用过程中占用机器的CPU、内存、流量资源的性能测试小工具。支持SDK:Android2.2以及以上版本Emmagee功能介绍1、检测当前时间被测应用占用的CPU使用率以及总体CPU使用量2、检测当前时间被
2022-06-06

如何用工具优化 golang 函数性能

golang 函数性能优化工具有:pprof:分析程序性能和内存使用情况,识别耗时的代码段。benchstat:比较不同函数或算法的性能,提供详细统计信息。go test -bench:内置基准测试功能,评估函数性能并查看基准测试报告。优化
如何用工具优化 golang 函数性能
2024-05-06

PHP 性能优化:基准测试与性能对比

php 应用程序性能优化至关重要,通过基准测试和性能对比可识别优化领域。基准测试有助于衡量应用程序性能,可用工具包括 apachebench 和 jmeter。性能对比将优化后的应用程序与未优化应用程序进行比较,以量化改进。常见的性能优化技
PHP 性能优化:基准测试与性能对比
2024-05-10

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录