转载,原文链接http://www.webryan.net/2013/02/web-page-test-based-on-phontomjs/

1、web性能监控背景描述

上期分享的《Web性能监控自动化探索之路–初识WebPageTest》从依赖webpagetest的角度给出了做性能日常检查的方案,但由于依赖结构相对复杂我们需要给出更简单的解决方案。测试同学没有快速投入的主要原因也是语言和维护成本相对比较大。但解决方案是多种多样的。那么我们再看下这个需求的本质:针对内外网环境需要定期对站点进行yslow和page speed检查,以保证在持续开发过程中保证质量。

对比webpagetest,我们再反思下手里的资源和特点:

1、对于固定的HTML结构,我们不需要多浏览器支持亦可以得到yslow和page speed等结论;

2、webkit是开源的;

3、pagespeed和yslow都是有开源sdk的;

那么我们的工作就变得很简单了,打包webkit实现一个不需要展示界面的程序(当然需要界面信息可以随时从UI线程里读取)生成需要的数据文件,并生成报表即可。流程简化如下:

1、通过QT或者phantomJS等webkit打包工具获取HTTP请求数据流HAR文件(这里采用phantomJS);

2、通过HAR文件来生成请求瀑布图、yslow报告和page speed报告;

3、通过保存HAR文件来生成站点的趋势;

4、通过修改hosts文件来控制内网测试环境;

2、PhantomJS介绍

PhantomJS(http://phantomjs.org/)是支持JavaScript API的无界面、运行在服务端的webkit环境。它通过JavaScript和CoffeeScript控制webkit的各个模块,比如CSS Selector,JSON,Canvas、SVG和HTTP网络等等。它非常适合:

1、用来做服务端的网站测试,包括Qunit,Jasmin等等

2、屏幕截图抓取

3、网页DOM操作

4、网络情况监控

它提供了很多的examples,其中netsniff.js就是用于监控网络请求并生成HAR文件的。,如图所示:

3、HAR文件(HTTP Archive Specification)

HAR(HTTP Archive Specification),是一个用来储存HTTP请求/响应信息的通用文件格式,基于JSON。这个格式的出现可以使HTTP监测工具以一种通用的格式导出所收集的数据,这些数据可以被其他支持HAR的HTTP分析工具(包括Firebug,httpwatch,Fiddler等)所使用,来分析网站的性能瓶颈。目前HAR规范最新版本为HAR 1.2。HAR文件必须是UTF-8编码,有无BOM无所谓。

HAR数据结构:

一个HAR文件就是一个JSON对象,如下:

1 {“log”: {
2 “version” : “1.2″,
3 “creator” : {},
4 “browser” : {},
5 “pages”: [],
6 “entries”: [],
7 “comment”: “”
8 }
9 }

  • version [string] – 版本,默认为1.1。
  • creator [object] – 创建HAR文件的程序名称和版本信息。
  • browser [object, 可选] – 浏览器的名称和版本信息。
  • pages [array, 可选] – 页面列表,如果应用不支持按照page分组,可以省去此字段。
  • entries [array] – 所有HTTP请求的列表。
  • comment [string, 可选] (new in 1.2) – 注释。

注:每个页面对应一个<page>对象,每个HTTP请求对应一个<entry>对象。如果HTTP的监测分析工具不能把请求按照page分组,那么<pages>为空。

4、Page Speed SDK和YSLOW

首先我们现在google的Page Speed站点上下载安装SDK。http://code.google.com/p/page-speed/wiki/DownloadPageSpeed?tm=2。

然后把通过phontomJS获取的har文件进行解析。

这边已经可以通过命令行获取到具体的分数和建议。

同理我们也可以获取yslow的分数。

5、HAR Viewer

HAR Viewer(http://www.softwareishard.com/har/viewer/)是基于Javascript的一个很强大的HAR分析工具,它可以将HAR文件以瀑布流和饼图等形式进行展示。源代码在这里:http://code.google.com/p/harviewer/。

这些图片结合HAR的产生和pagespeed的评分建议是不是很酷!

6、后续的事儿

把站点的HAR文件用数据库的形式存储,建立趋势对比的文档。把自助工具建立成站点。

参考URL:

1、http://phontomjs.org

2、http://httparchive.org/about.php#harfile

3、http://weizhifeng.wordpress.com/2011/03/26/http-archive-specification-chinese/

4、http://www.igvita.com/2012/08/28/web-performance-power-tool-http-archive-har/

5、http://code.google.com/p/page-speed/wiki/DownloadPageSpeed?tm=2

6、http://groups.google.com/group/http-archive-specification

转载于:https://www.cnblogs.com/ypzh/p/3948465.html

基于phantomJS实现web性能监控相关推荐

  1. 如何进行 web 性能监控

    (给全栈前端精选加星标,提升前端技能) 作者:liu, summerqy http://www.alloyteam.com/2020/01/14184/ 也许你有听过一个问题,你这款 web 应用性能 ...

  2. TPTP Web性能监控

    近期因为项目原因,调研了一下TPTP与Tomcat的关系,记录如下 很久很久以前玩过TPTP,当初最终成果是不用插件启动Tomcat,运行相关Web程序,查看调用时间.不过具体步骤忘记了,现在想重新搞 ...

  3. 基于Grafana的Web监控报警

    点击蓝色字关注我! 我曾经在7月份给公司研发团队分享过「web性能监控介绍及应用」.这里面我们阐述了这样几个话题: 为什么做监控 其中,「从零搭建一个web监控系统」这一小节里面,我主要使用了Stat ...

  4. python虚拟cpu性能_python实现可视化动态CPU性能监控

    本文实例为大家分享了python可视化动态CPU性能监控的具体代码,供大家参考,具体内容如下 打算开发web性能监控,以后会去学js,现在用matp来补救下,在官网有此类模板,花了一点时间修改了下,有 ...

  5. 新IT运维模式下,全栈溯源助你解应用性能监控难题

    [51CTO.com原创稿件]2016年,Gartner对APM的定义将原来的五个维度定义修改成了三个维度,即:数字化体验监控(DEM),应用发现.追踪和诊断(ADTD),以及应用分析(AA).此外, ...

  6. 基于网络监控软件的流量、性能监控

    2019独角兽企业重金招聘Python工程师标准>>> 随着Internet技术的不断发展,网络中出现的不安全因素越来越多,网络管理及安全越来越为用户所重视,用户对网络的要求越来越高 ...

  7. 深入理解前端性能监控—Performance + 腾讯superProfiler(基于Performance API的性能监控工具)

    https://segmentfault.com/a/1190000018785911 在同样的网络环境下,有两个同样能满足你的需求的网站,一个唰的一下就加载出来了,另一个白屏转圈转了半天内容才出来, ...

  8. Java生产环境下性能监控与调优详解 第2章 基于JDK命令行工具的监控

    Java生产环境下性能监控与调优详解 第2章 基于JDK命令行工具的监控 2-1 JVM的参数类型 标准参数 x参数 XX参数 2-2 查看JVM运行时参数 2-3 jstat查看JVM统计信息 2- ...

  9. 基于JVMTI 实现性能监控

    什么是JVMTI JVMTI 全称为 JVM Tool Interface,它是Java虚拟机定义的一个开发和监控JVM使用的程序接口(programing interface),通过该接口可以探查J ...

最新文章

  1. Apache启动时报Could not reliably determine the server's fully qualified domain name
  2. imagenet 测试精度记录
  3. Freemarker + xml 实现Java导出word
  4. 用JavaScript做301转向
  5. Web安全的三个攻防姿势
  6. Java 8 Friday Goodies:Lambda和排序
  7. 爱奇艺视频如何联系客服?爱奇艺联系客服攻略
  8. 【Python】TensorBoard的启动问题
  9. Rtworld目录网全解开源2.0-功能齐全
  10. Altium AD20原理图页码自动编号,右下角标题栏
  11. (十)Struts2 值栈/OGNL
  12. Cesium中Homebutton改变默认跳转位置 【转】
  13. php v9 用于静态页查询登陆状态以及用户信息的ajax接口,phpcms V9如何判断用户是否登录以及登陆后的标签写法问题 - 小众知识...
  14. itext 表格宽度自适应_微信公众号推文中如何自定义添加表格?
  15. 零信任安全和软件定义边界
  16. PCB设计之EMC 47原则
  17. Linux环境下安装部署redis
  18. 苹果发布会在即 iMessage将迎来哪些重大更新?
  19. 科技百咖 | 探迹科技:让天下没有难做的销售
  20. 解决POSTMAN传参报错,JSON parse error: Cannot deserialize instance of `java.util.ArrayList` out of START_OB

热门文章

  1. JZOJ 5703. 【gdoi2018 day2】木板(board)
  2. python sklearn 归一化_第3章 Sklearn概述
  3. c#读蓝牙数据_客户端实现蓝牙接收(C#)知识总结
  4. python把字符串放到列表_python中for循环把字符串或者字典添加到列表的方法
  5. 导师 = advisor + supervisor
  6. LOJ #2734 Luogu P3615 [JOI2016春季合宿]Toilets (结论、贪心)
  7. pythonwin32api拖动图标_Python使用win32api,模拟鼠标移动并复制/粘贴到diskfi中
  8. int数组初始化_Java中到底有没有多维数组
  9. EJS学习(三)之语法规则中
  10. 软件测试第四周作业WordCount优化