前端性能测试

背景

一重要客户抱怨页面加载时间太长,我们肯定立即响应了。开发人员定位是前端的性能问题,也研究出一些优化的方法。下一步就是我们测试人员要能够得出性能度量数据,来衡量性能优化的效果。

工具

后端性能测试,倒是用过JMeter,前端性能测试还是第一次做。首先得找个靠谱的测试工具。

WebpageTest

官方网站: https://www.webpagetest.org/,也是工具的使用页面。它可以测试部署在公网的应用,由于我们是to B的,部署在公司内网,所以这个工具不合适,虽然也可以自己部署,估计要花费比较长的时间,就没有继续研究。

YSlow

官方网站: http://yslow.org/ ,是Yahoo发布的一款插件,可安装在Firefox和Chrome上。雅虎卓越绩效团队已经确定了34个影响网页性能的规则。YSlow的网页分析是基于这34个可测试的规则中的23个。

最小化HTTP请求

使用内容交付网络

避免空的src或href

添加一个Expires或一个Cache-Control Header

Gzip组件

把StyleSheets放在最前面

把脚本放在底部

避免使用CSS表达式

使JavaScript和CSS外部

减少DNS查找

缩小JavaScript和CSS

避免重定向

删除重复的脚本

配置ETags

使AJAX缓存

使用GET进行AJAX请求

减少DOM元素的数量

没有404s

减小Cookie大小

为组件使用不使用Cookie的域

避免过滤器

不要在HTML中缩放图像

使favicon.ico小和缓存

YSlow更主要是性能分析的工具,有性能度量的总体评分,但没有详细的指标数据。

Lighthouse

Lighthouse是Google开发并开源的自动化前端测试工具。运行 Lighthouse 的方式有两种:作为 Chrome 扩展程序运行,或作为命令行工具运行。 Chrome 扩展程序提供了一个对用户更友好的界面,方便读取报告。 命令行工具允许您将 Lighthouse 集成到持续集成系统。下面主要介绍命令行的安装运行方式。

安装 Node,需要版本 5 或更高版本。

安装 Lighthouse 作为一个全局节点模块。

npm install -g lighthouse

传递 --help 标志以查看可用的输入和输出选项。

lighthouse --help

开源项目,文档比较有限,可能更多的参数使用需要自己看代码了。综合考虑就选它了。

性能度量指标

用户体验是主观的感受,它由一系列指标共同决定,如"First Content Time", 第一个text或image渲染的时间;"Time to Interactive",页面完全可交互的时间。

lighthouse的性能度量指标和WebpageTest差不多,数值都是越小越好。

First Contentful Paint marks the time at which the first text or image is painted. FCP measures how long it takes the browser to render the first piece of DOM content after a user navigates to your page. Images, non-white <canvas> elements, and SVGs on your page are considered DOM content; anything inside an iframe isn't included.

First Meaningful Paint measures when the primary content of a page is visible. FMP measures when the primary content of a page is visible to the user. The raw score for FMP is the time in seconds between the user initiating the page load and the page rendering the primary above-the-fold content. FMP essentially shows the timing of the paint after which the biggest above-the-fold layout change happens. Learn more about the technical details of FMP in Google's Time to First Meaningful Paint: a layout-based approach.

First Contentful Paint (FCP) and FMP are often the same when the first bit of content rendered on the page includes the content above the fold. However, these metrics can differ when, for example, there's content above the fold within an iframe. FMP registers when the content within the iframe is visible to the user, while FCP doesn't include iframe content.

Speed Index shows how quickly the contents of a page are visibly populated. Speed Index measures how quickly content is visually displayed during page load. Lighthouse first captures a video of the page loading in the browser and computes the visual progression between frames. Lighthouse then uses the Speedline Node.js module to generate the Speed Index score.

First CPU Idle marks the first time at which the page's main thread is quiet enough to handle input. First CPU Idle measures how long it takes a page to become minimally interactive. A page is considered minimally interactive when:

Most—but not necessarily all—UI elements on the screen are interactive, and

The page responds, on average, to most user input in a reasonable amount of time.

Time to interactive is the amount of time it takes for the page to become fully interactive. TTI measures how long it takes a page to become fully interactive. A page is considered fully interactive when:

The page displays useful content, which is measured by the First Contentful Paint,

Event handlers are registered for most visible page elements, and

The page responds to user interactions within 50 milliseconds.

The maximum potential First Input Delay that your users could experience is the duration, in milliseconds, of the longest task. 

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容