【专项测试】webview性能分析的笔记

web和webview的性能分析

一些解释:

1.webview是手机的浏览器,不是H5

2.android4.4就默认用chrome作为webview的浏览器了

chrome分析工具介绍

步骤:

1.打开chrome

2.打开F12

3.再发送http请求

4.在network中找数据分析

chrome中network的大体介绍(如下图)

[
clipboard

clipboard924×632 67.2 KB](https://ceshiren.com/uploads/default/original/2X/7/732d8f3f6c2b88e6f77b2a852f369bffbf8e1e93.png)

1.disable cache表示是否关闭缓存,关闭等于冷启动

2.all、XHR(AJAX)、JS、CS表示不同的请求类型,

3.name中的请求是按照先后顺序来展示的,第一个请求肯定是www.baidu,com

4.蓝线表示dom构建成功的时间点

5.红线表示全部资源都加载完成的时间点

6.底部显示有多少个请求,资源有多大,完成全部请求需要多长时间,还有dom和资源加载的时间点

红线和蓝线额外知识点:

1.xpath是从dom里面找的

2.css是从红色线图片加载完再去找,更稳定一些,找的速度也快一些,dom不好找啊,速度慢

每个请求的详细信息(见下图)

[
clipboard

clipboard807×412 8.17 KB](https://ceshiren.com/uploads/default/original/2X/2/2bf93c5115811ab3f9154db85545dc7e7f904ea3.png)

1.queued at 878.59ms

一个www.baidu.com的请求,轮到获取这个资源在前面排队的时间

2.queued at 878.59ms

排队的请求+Queueing的时间,878.59ms+1.25ms=879.85ms

3.Queueing

请求文件顺序的的排序 ,浏览器有线程限制的,发请求也不能所有的请求同时发送,因此是从添加到待处理队列到实际开始处理的时间间隔,通常chrome的线程支持6个

4.Stalled

  • 普通解释:是浏览器得到要发出这个请求的指令到请求可以发出的等待时间,一般是代理协商、以及等待可复用的TCP连接释放的时间,不包括DNS查询、建立TCP连接等时间等
  • 详细解释:当http真正发送请求时,比如请求一个gif资源,服务端接受到这个请求后,需要返回一个tcp响应,这个tcp响应是ack的响应,客户端收到后,就知道不用重复发送这个请求了,如果客户端在一定时间内收不到这个请求,就会重新发送这个请求,windows好像听大神说会发5次,如果5次,服务端都没有发送tcp响应,那么tcp会断开,重新发起tcp的三次握手,所以出现stalled阶段过长,往往是丢包所致,这也意味着网络或服务端有问题。

参考资料:

<header style="align-items: center; display: flex; margin-bottom: 1em;">cnblogs.com 3</header>

[图片上传失败...(image-a08f7b-1609142005878)]

chrome的timeline中stalled问题解析 - 星朝 - 博客园 3

在公司国做一个运营活动,上线后PM总是抱怨访问速度过慢,影响运营效果。然而从前端的角度来说我已经做了如下优化: css、js合并压缩、图片压缩、雪碧图、静态资源全部上CDN。但是依然很慢,实在s是困惑

https://blog.csdn.net/sinat_21455985/article/details/53508115 2

5.DNS Lookup:

时间执行DNS查找。每个新域pagerequires DNS查找一个完整的往返。 DNS查询的时间,当本地DNS缓存没有的时候,这个时间可能是有一段长度的,但是比如你一旦在host中设置了DNS,或者第二次访问,由于浏览器的DNS缓存还在,这个时间就为0了。

6.Inital connection:

建立TCP连接的时间,就相当于客户端从发请求开始到TCP握手结束这一段,包括DNS查询+Proxy时间+TCP握手时间。

7.request sent:

请求第一个字节发出前到最后一个字节发出后的时间,也就是上传时间

8.Waiting(TTFB):

请求发出后,到收到响应的第一个字节所花费的时间(Time To First Byte),发送请求完毕到接收请求开始的时间;这个时间段就代表服务器处理和返回数据网络延时时间了。服务器优化的目的就是要让这个时间段尽可能短。

9.Content Download :

收到响应的第一个字节,到接受完最后一个字节的时间,就是下载时间

如何监测手机端的webview的性能

使用chrome remote inspect工具

步骤:

1.准备chrome的62版本,其他版本显示不出network等bug

2.android版本为6.0才行,mumu默认是6,而且还在开发者模式中帮你打开了webview的开关

3.如果不是android6.0的版本,你的手机需要root,才可以在开发者选项打开webview开关

4.或者在app中打开webview这个开关


clipboard

5.准备好翻墙的环境

6.在chrome的url中输入:chrome://inspect/#devices

clipboard

7.连接设备,并访问webview的网站,比如打开百度


clipboard

8.当输完百度后,就可以点击inspect去观察了


clipboard

9.但因为我的chrome不是62的,所以分析不出来了,看下图,什么都没有

[
clipboard

clipboard1400×438 66.5 KB](https://ceshiren.com/uploads/default/original/2X/4/473e806d2d989251b88357de0d58eea78b549671.png)

如何测试H5的性能

含义:其实就是webview的性能了,只不过可以用代码的方式,就不用chrome了,可以实现自动化什么的。本质是通过w3c的标准,通过特定的api,运用埋点等技术,分析H5的性能

w3c的图解

[
clipboard

clipboard1115×660 246 KB](https://ceshiren.com/uploads/default/original/2X/c/c7b95de7760578dc733c4f9d5211d62cb99e02fd.png)

● prompt for unload:访问一个新页面时,旧页面卸载完成的时间
● redirect:重定向,用户住校登录时返回页面和跳转到其他的网站等
● app cache:检查缓存是否打开
● DNS:DNS查询的时间
● TCP:TCP连接
● request:浏览器发起请求
● response:服务器返回响应给客户端
● processing:各种状态的时间点
● load:出发load事件执行的时间

埋点的功能
1.可以实现在不同用户的网络环境、硬件中,考察出真实服务器请求的速度,因为我可以分离出tcp、dns、request、processing等客户端的处理,只看服务端的处理
2.可以观察我当前网络和硬件下,客户端会因为什么导致网络卡顿延迟,比如是不是DNS出问题了,还是重定向等不合理导致的

参考api:https://www.w3.org/TR/navigation-timing/ 1

chrome用console代码的步骤:
1.进入F12,然后发起请求
2.进入到console界面,先clear()屏幕
3.输入window.performance.timing

[
clipboard

clipboard891×374 12.2 KB](https://ceshiren.com/uploads/default/original/2X/f/fafa6cd9e507737794e8a8fef5e0702a8289b680.png)

用pycharm获取性能的代码:


from selenium import webdriver

driver=webdriver.Chrome()

driver.get("https://www.baidu.com")

print(driver.execute_script("return JSON.stringify(window.performance.timing)"))

结果如下:和chrome的一毛一样

{“connectStart”:1588594545718,“navigationStart”:1588594545712,“loadEventEnd”:1588594549759,“domLoading”:1588594546591,“secureConnectionStart”:1588594545734,“fetchStart”:1588594545713,“domContentLoadedEventStart”:1588594548960,“responseStart”:1588594546581,“responseEnd”:1588594546590,“domInteractive”:1588594548960,“domainLookupEnd”:1588594545718,“redirectStart”:0,“requestStart”:1588594546501,“unloadEventEnd”:0,“unloadEventStart”:0,“domComplete”:1588594549754,“domainLookupStart”:1588594545715,“loadEventStart”:1588594549754,“domContentLoadedEventEnd”:1588594548973,“redirectEnd”:0,“connectEnd”:1588594546500}

(文章来源于霍格沃兹测试学院)

更多技术文章可点击http://qrcode.testing-studio.com/f?from=jianshu&url=https://ceshiren.com/t/topic/3822

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

推荐阅读更多精彩内容