公开/公告号CN101917286A
专利类型发明专利
公开/公告日2010-12-15
原文格式PDF
申请/专利权人 上海普元信息技术股份有限公司;
申请/专利号CN201010240664.7
申请日2010-07-30
分类号H04L12/24(20060101);H04L29/08(20060101);
代理机构31002 上海智信专利代理有限公司;
代理人王洁;郑暄
地址 201203 上海市张江高科技园区碧波路456号4F
入库时间 2023-12-18 01:26:38
法律状态公告日
法律状态信息
法律状态
2013-11-20
专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L12/24 变更前: 变更后: 申请日:20100730
专利权人的姓名或者名称、地址的变更
2013-01-02
授权
授权
2011-02-02
实质审查的生效 IPC(主分类):H04L12/24 申请日:20100730
实质审查的生效
2010-12-15
公开
公开
技术领域
本发明涉及互联网应用系统领域,特别涉及企业Web应用系统领域和互联网Web应用领域和移动互联网WAP应用以及Widget应用技术领域,具体是指一种互联网应用系统中实现跨浏览器的Web性能分析系统及方法。
背景技术
随着现代社会科学技术的发展,互联网技术已经深入到社会生活的方方面面。在企业应用中,大型企业的计算机软件系统即企业应用系统的不断进步,已经由过去的C/S(客户端/服务器)模式转变为现在的B/S(浏览器/服务器)模式,传统的企业应用系统已经成为企业Web应用系统;互联网应用中,互联网技术的迅猛发展,以HTML、CSS、Javascript为核心技术的web应用早已成为互联网技术的主流,特别是RIA技术和Widget技术更带来了革命性的发展;移动互联网中,3G时代的来临,使得WAP和Widget技术也进入一个飞速发展时期。
互联网技术的发展带动了浏览器的发展,桌面电脑和移动设备上的浏览器层出不穷。桌面电脑上的Internet Explorer、Firefox、Chrome、Safari、Opera等众多浏览器展开了浏览器大战,而移动设备上的Opear Mini、Windows Mobile IE、Gorilla、UCWEB也是频出新版本。HTML、CSS、Javascript技术是互联网技术的基础,Javascript语言更是一种必不可少的脚本语言。虽然各个浏览器厂商都在尽力提高Javascript的运行效率,但是相对互联网技术的消费者-用户来说,性能问题仍然是互联网应用的一个重大问题。
目前只有在桌面操作系统的Firefox浏览器和IE浏览器的8.0版本才有性能分析工具,它们的性能分析工具都是基于浏览器提供的API进行开发。然而其他众多浏览器却没有性能分析工具。
目前的Javascript调试工具主要能在IE和firefox下调试Javascript,因为IE和Firefox分别提供了javascript的调试接口。以Firefox为例,图1说明了Firefox上的性能分析工具Firebug、Page Speed和firefox的关系。Firefox提供了Javascript调试接口:jsdIDebuggerService,可以向它注入一些调试的钩子,来实现性能分析,它提供的调试接口主要有functionHook、scriptHook、topLevelHook等。使用者只要实现这些接口,把它注册到jsdIDebuggerService中,即可在Firefox中做Javascript的运行情况性能分析。Firefox同样提供了Http请求的接口nsIStreamListener,利用它的onDataAvailable方法可以做网络传输的性能分析。
然而这种性能分析方法的几个弊端包括:不能跨浏览器,因为浏览器提供的接口不同,基于浏览器开发出来的性能分析工具不能通用,目前的性能分析工具都是只能在IE、Firefox上使用,而在chrome、safari、opera等浏览器上以及移动设备上的Opear Mini、Windows MobileIE、Gorilla、UCWEB都不能做性能分析;需要安装插件,此类性能分析工具都需要在浏览器上安装插件;浏览器版本的升级会导致性能分析工具不能使用;很难做到和CPU、内存等结合起来分析等等。
发明内容
本发明的目的是克服了上述现有技术中的缺点,提供一种不依赖于具体浏览器和插件的互联网系统进行Web性能分析、直观形象、使用方便快捷、支持多种浏览器、工作性能稳定可靠、适用范围较为广泛的互联网应用系统中实现跨浏览器的Web性能分析系统及方法。
为了实现上述的目的,本发明的互联网应用系统中实现跨浏览器的Web性能分析系统及方法如下:
该互联网应用系统中实现跨浏览器的Web性能分析系统,其主要特点是,所述的系统包括:
结果展示层,运行在图形化桌面操作系统上,并以用户操作界面的形式进行性能分析结果的展示;
数据采集层,与所述的结果展示层相连接,以Http代理服务器为基础进行数据的采集和性能分析、性能分析数据的转换;
应用运行层,与所述的数据采集层相连接,其中包括运行于浏览器中的应用程序以及Javascript运行情况采集器。
该互联网应用系统中实现跨浏览器的Web性能分析系统中的结果展示层包括结果展示用户接口模块、Http内容压缩模块、图片压缩分析模块、JS代码压缩模块、Http请求计数模块、浏览器缓存模块、JS调用树时间统计模块、JS函数统计模块、JS CPU分析模块和JS内存分析模块,所述的Http内容压缩模块、图片压缩分析模块、JS代码压缩模块、Http请求计数模块、浏览器缓存模块、JS调用树时间统计模块、JS函数统计模块、JS CPU分析模块和JS内存分析模块均与所述的结果展示用户接口模块相连接。
该互联网应用系统中实现跨浏览器的Web性能分析系统中的图形化桌面操作系统可以为Windows操作系统或者Linux操作系统。
该互联网应用系统中实现跨浏览器的Web性能分析系统中的进行性能分析结果的展示,具体为:
以表格、树、时间序列图的用户接口形式展示性能分析结果。
该互联网应用系统中实现跨浏览器的Web性能分析系统中的数据采集层包括Http代理服务器、JS性能分析编译引擎模块、JS性能分析服务器、Http内容压缩模块、图片压缩分析模块、JS代码压缩模块、Http请求计数模块、浏览器缓存模块、JS调用树时间统计模块、JS函数统计模块、JS CPU分析模块和JS内存分析模块,所述的结果展示层分别通过Http内容压缩模块、图片压缩分析模块、JS代码压缩模块、Http请求计数模块、浏览器缓存模块、JS调用树时间统计模块、JS函数统计模块、JS CPU分析模块和JS内存分析模块与所述的Http代理服务器、JS性能分析编译引擎模块和JS性能分析服务器相连接,且所述的Http代理服务器、JS性能分析编译引擎模块和JS性能分析服务器与所述的应用运行层相连接。
该互联网应用系统中实现跨浏览器的Web性能分析系统中的Javascript运行情况采集器包括Javascript性能分析代码模块和Javascript性能数据上报模块,所述的Javascript性能分析代码模块和Javascript性能数据上报模块均与所述的数据采集层相连接。
该互联网应用系统中实现跨浏览器的Web性能分析系统中的浏览器为Internet Explorer浏览器、Firefox浏览器、Chrome浏览器、Safari浏览器、Opera浏览器、Opear Mini浏览器、Windows Mobile IE浏览器、Gorilla浏览器或者UCWEB浏览器。
该互联网应用系统中实现跨浏览器的Web性能分析系统中的数据的类型包括Http请求内容压缩数据、图片压缩数据、Javascript代码压缩数据、Http请求数优化数据、浏览器缓存数据、Javascript调用树的时间数据、Javascript函数执行统计数据、Javascript执行的CPU数据和Javascript执行的内存数据。
该基于上述的系统实现互联网应用系统中跨浏览器的Web性能分析的方法,主要特点是,所述的方法包括以下步骤:
(1)系统根据用户操作,进行启动和初始化操作;
(2)系统进行Javascript执行情况的数据收集操作;
(3)系统进行CPU、内存数据收集操作;
(4)系统分别进行Http内容压缩数据、图片压缩数据、Http请求数的数据、浏览器缓存数据的收集操作;
(5)系统根据用户的查看请求,展现出相应的性能分析结果。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的启动和初始化操作,包括以下步骤:
(11)系统根据用户的输入操作,接收需要分析性能的URL或者选择本地的HTML文件;
(12)系统根据用户的操作,选择需要使用的浏览器;
(13)系统根据用户的操作,配置Http服务器的端口;
(14)系统根据用户的操作,启动系统中的性能分析工具;
(15)所述的性能分析工具根据预先配置的监测端口启动一个Http服务器,并记录服务器地址;
(16)所述的性能分析工具根据用户输入的URL和Http服务器的端口生成客户端URL;
(17)所述的性能分析工具打开浏览器,并让浏览器打开生成的客户端URL;
(18)所述的性能分析工具发出启动性能分析的事件通知。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的Javascript执行情况数据收集操作,包括以下步骤:
(21)系统根据用户操作,打开性能分析工具的监测开关,并根据输入参数打开浏览器让浏览器转到指定的URL;
(22)所述的浏览器向Http服务器发送Http请求;
(23)Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号等内容,计算出真实的URL;
(24)Http代理服务器建立Http连接,转发该浏览器提交过来的数据,获取该URL的内容;
(25)Http代理服务器根据Http连接所返回的header中contentType判断该请求返回的类型,根据contenType进行资源处理操作;
(26)浏览器中的javascript所执行的某一函数之前先执行javascript性能分析代码,获得当前的时间,生成一个执行的编号;
(27)浏览器中的javascript所执行的某一函数之后再执行javascript性能分析代码,获得当前的时间,获取父函数的编号,用以记录调用堆栈等内容;
(28)浏览器中的javascript性能数据上报模块定时通过Ajax的方式向Javascript性能分析服务器提交Javascript性能分析数据;
(29)Javascript性能分析服务器将提交上来的数据转为Javascript性能数据模型;
(2a)Javascript性能分析服务器发起Javascript性能数据模型更新通知。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的Javascript性能分析数据的格式为:
[性能数据[函数编号,地址,行号,开始时间,结束时间,持续时间],调用关系数据]。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的根据contenType进行资源处理操作,包括以下步骤:
(251)如果请求的类型是text/html,则调用编译引擎将该html编译为带有javascript性能分析代码的html代码。并将该代码输出到浏览器;
(252)如果请求的类型是text/javascript,则调用编译引擎将该javascript代码编译为带有javascript性能分析代码的javascript代码。并将该代码输出到浏览器;
(253)如果请求的类型是其他类型,则直接输出到浏览器。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的javascript性能分析代码为在每一个函数的前后所增加的性能分析代码,用于记录每个函数执行的起始时间、执行编号、调用堆栈等信息。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的CPU、内存数据收集操作,包括以下步骤:
(31)所述的性能分析工具通过JNI调用C++的代码打开浏览器,C++的代码打开浏览器,并返回该浏览器的进程ID;
(32)所述的性能分析工具定时通过JNI调用C++代码获取该进程的CPU和内存数据;
(33)所述的性能分析工具发起Javascript性能数据模型更新通知。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的Http内容压缩数据的收集操作,包括以下步骤:
(41)浏览器向Http代理服务器发送Http请求;
(42)所述的Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号的信息,计算出真实的URL;
(43)所述的Http代理服务器建立Http连接,并转发浏览器提交过来的数据,获取该URL的内容;
(44)所述的Http代理服务器记录本次Http请求的时间,数据量;
(45)所述的Http代理服务器调用Gzip压缩判断操作判断本次Http请求的返回数据是否经过Gzip压缩;
(46)所述的Http代理服务器发出网络传输内容分析的数据模型更新通知。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的调用Gzip压缩判断操作,包括以下步骤:
(451)如果本次Http请求的返回数据经过Gzip压缩,则直接返回步骤(46);
(452)如果本次Http请求的返回数据没有经过Gzip压缩,则调用Gzip压缩函数压缩本次Http请求的内容;
(453)所述的Http代理服务器根据压缩后的资源大小,计算出压缩比例;
(454)所述的Http代理服务器更新Http压缩的数据模型。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的图片压缩数据的收集操作包括以下步骤:
(51)浏览器向Http代理服务器发送Http请求;
(52)所述的Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号的信息,计算出真实的URL;
(53)所述的Http代理服务器建立Http连接,并转发浏览器提交过来的数据,获取该URL的内容;
(54)所述的Http代理服务器根据Http头中的内容类型contentType判断数据返回的类型;
(55)如果内容类型contentType为是image,则调用Image的压缩应用程序接口API,并压缩该图片;
(56)所述的Http代理服务器根据压缩后的资源大小,计算出压缩比例;
(57)所述的Http代理服务器更新图片压缩的数据模型;
(58)所述的Http代理服务器发出网络传输内容分析的数据模型更新通知。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的Http请求数的数据的收集操作,包括以下步骤:
(61)所述的浏览器向Http代理服务器发送Http请求;
(62)所述的Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号的信息,计算出真实的URL;
(63)所述的Http代理服务器建立Http连接,并转发浏览器提交过来的数据,获取该URL的内容;
(64)所述的Http代理服务器根据Http头中的内容类型contentType判断数据返回的类型;
(65)所述的Http代理服务器将text/javascript和text/css分类更新到Http请求数的数据模型中;
(66)所述的Http代理服务器根据TCP/IP协议的大小给出Http合并建议;
(67)所述的Http代理服务器发出网络传输内容分析的数据模型更新通知。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的浏览器缓存数据的收集操作,包括以下步骤:
(71)浏览器向Http代理服务器发送Http请求;
(72)所述的Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号的信息,计算出真实的URL;
(73)所述的Http代理服务器建立Http连接,并转发浏览器提交过来的数据,获取该URL的内容;
(74)所述的Http代理服务器根据Http头中的cache获得浏览器缓存设置,并调用浏览器缓存判断操作;
(75)所述的Http代理服务器发出网络传输内容分析的数据模型更新通知;
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的调用浏览器缓存判断操作,包括以下步骤:
(741)如果所获得的浏览器缓存在当前日期之后,则返回;
(742)如果所获得的浏览器缓存在当前日期之前或没有设置,则更新浏览器缓存数据模型。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的展现出性能分析结果,包括以下步骤:
(81)系统根据用户的操作,查找相应的结果显示视图;
(82)显示相应的结果显示视图。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的结果显示视图包括Http请求内容压缩分析视图、图片压缩数据分析视图、Javascript代码压缩分析视图、Http请求数数据分析视图、浏览器缓存数据分析视图、Javascript调用树的时间分析视图、Javascript函数执行统计分析视图、Javascript执行的CPU分析视图和Javascript执行的内存分析视图。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的Http请求内容压缩分析视图的展示信息包括Http请求内容的地址、Http请求内容的Header、Http请求的内容、Http请求返回的Header、Http请求返回的内容、Http请求返回的内容大小、Http请求返回的内容压缩后的大小和Http请求返回的内容的压缩比。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的图片压缩数据分析视图的展示信息包括图片的URL、图片的类型、图片的宽高、图片的大小、图片预览、压缩后的图片大小、图片的压缩比和压缩后的图片预览。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的Javascript代码压缩分析视图的展示信息包括Javascript的URL、Javascript的大小、Javascript压缩后的大小和Javascript的压缩比。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的Http请求数数据分析视图的展示信息包括Javascript文件的请求数及请求详细URL、Javascript文件的建议请求数及文件合并列表、CSS文件的请求数及请求详细URL、CSS文件的建议请求数及文件合并列表和浏览器缓存分析结果展示。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的浏览器缓存数据分析视图的展示信息包括Http请求内容的URL、Http请求的Cache时间和Http请求的Cache的建议时间。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的Javascript调用树的时间分析视图的展示信息包括Javascript调用树、Javascript当前函数的函数名、Javascript调用时间、Javascript调用时间所占百分比、Javascript调用时间所占百分比的图形化、Javascript当前函数所在的URL和Javascript当前函数所在行号。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的Javascript函数执行统计分析视图的展示信息包括Javascript函数的函数名、Javascript函数的调用次数、Javascript函数的调用所占时间、Javascript函数的平均时间、Javascript函数的最大执行时间、Javascript函数的最小执行时间、Javascript函数的调用所占的百分比、Javascript函数所在的URL和Javascript函数所在的行号。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的Javascript执行的CPU分析视图的展示信息包括浏览器在每个时间点的CPU使用率折线图和在选择每个时间段时过滤出当前时间内执行的Javascript函数。
该实现互联网应用系统中跨浏览器的Web性能分析的方法中的Javascript执行的内存分析视图的展示信息包括浏览器在每个时间点的内存大小折线图和在选择每个时间段时过滤出当前时间内执行的Javascript函数。
采用了该发明的互联网应用系统中实现跨浏览器的Web性能分析系统及方法,由于影响互联网应用性能的问题主要有两个方面:网络传输速度和Javascript的执行速度,本发明的性能分析包括网络传输内容的分析和代码执行情况分析等内容,并包括了网络传输内容分析和Javascript执行情况分析,其中,网络传输内容分析包括以下内容:Http请求内容压缩分析、图片压缩分析、Javascript代码压缩分析、Http请求数优化分析和浏览器缓存分析。而Javascript执行情况分析则包括Javascript调用树的时间分析、Javascript函数执行统计分析、Javascript执行的CPU分析和Javascript执行的内存分析,每一个分析功能都包含数据采集、数据分析和分析结果展示几个方面的内容,从而实现了跨浏览器的Javascript性能分析,提供了性能分析的统一途径,提高了性能分析的效率,不仅操作简单形象,而且快捷方便,整个性能分析环境的运行效率较高,工作性能稳定可靠,适用范围较为广泛;不仅如此,该方法还能够以图形化的方式向用户报告性能结果,给出优化建议,为互联网应用的性能调优打下了坚实的基础。
附图说明
图1为本发明的Firebug、Page Speed和firefox的关系图。
图2为本发明的互联网应用系统中实现跨浏览器的Web性能分析系统的架构示意图。
图3为本发明的互联网应用系统中实现跨浏览器的Web性能分析的方法中的网络传输内容分析的数据模型示意图。
图4为本发明的互联网应用系统中实现跨浏览器的Web性能分析的方法中的Javascript执行情况分析的数据模型示意图。
图5为本发明的互联网应用系统中实现跨浏览器的Web性能分析的方法中的Javascript性能分析编译引擎的类模型示意图。
图6为本发明的互联网应用系统中实现跨浏览器的Web性能分析的方法中的Http代理服务器的模型示意图。
具体实施方式
为了能够更清楚地理解本发明的技术内容,特举以下实施例详细说明。
请参阅图1和图2所示,该互联网应用系统中实现跨浏览器的Web性能分析系统,其主要特点是,所述的系统包括:
(1)结果展示层,运行在图形化桌面操作系统上,并以用户操作界面的形式进行性能分析结果的展示;该结果展示层包括结果展示用户接口模块、Http内容压缩模块、图片压缩分析模块、JS代码压缩模块、Http请求计数模块、浏览器缓存模块、JS调用树时间统计模块、JS函数统计模块、JS CPU分析模块和JS内存分析模块,所述的Http内容压缩模块、图片压缩分析模块、JS代码压缩模块、Http请求计数模块、浏览器缓存模块、JS调用树时间统计模块、JS函数统计模块、JS CPU分析模块和JS内存分析模块均与所述的结果展示用户接口模块相连接;该图形化桌面操作系统可以为Windows操作系统或者Linux操作系统;该进行性能分析结果的展示,具体为:
以表格、树、时间序列图的用户接口形式展示性能分析结果;
(2)数据采集层,与所述的结果展示层相连接,以Http代理服务器为基础进行数据的采集和性能分析、性能分析数据的转换;该数据采集层包括Http代理服务器、JS性能分析编译引擎模块、JS性能分析服务器、Http内容压缩模块、图片压缩分析模块、JS代码压缩模块、Http请求计数模块、浏览器缓存模块、JS调用树时间统计模块、JS函数统计模块、JS CPU分析模块和JS内存分析模块,所述的结果展示层分别通过Http内容压缩模块、图片压缩分析模块、JS代码压缩模块、Http请求计数模块、浏览器缓存模块、JS调用树时间统计模块、JS函数统计模块、JS CPU分析模块和JS内存分析模块与所述的Http代理服务器、JS性能分析编译引擎模块和JS性能分析服务器相连接,且所述的Http代理服务器、JS性能分析编译引擎模块和JS性能分析服务器与所述的应用运行层相连接;
(3)应用运行层,与所述的数据采集层相连接,其中包括运行于浏览器中的应用程序以及Javascript运行情况采集器;该Javascript运行情况采集器包括Javascript性能分析代码模块和Javascript性能数据上报模块,所述的Javascript性能分析代码模块和Javascript性能数据上报模块均与所述的数据采集层相连接;该浏览器为Internet Explorer浏览器、Firefox浏览器、Chrome浏览器、Safari浏览器、Opera浏览器、Opear Mini浏览器、Windows Mobile IE浏览器、Gorilla浏览器或者UCWEB浏览器。
同时,该互联网应用系统中实现跨浏览器的Web性能分析系统中的数据的类型包括Http请求内容压缩数据、图片压缩数据、Javascript代码压缩数据、Http请求数优化数据、浏览器缓存数据、Javascript调用树的时间数据、Javascript函数执行统计数据、Javascript执行的CPU数据和Javascript执行的内存数据。
再请参阅图3至图6所示,该基于上述的系统实现互联网应用系统中跨浏览器的Web性能分析的方法,主中包括以下步骤:
(1)系统根据用户操作,进行启动和初始化操作,包括以下步骤:
(a)系统根据用户的输入操作,接收需要分析性能的URL或者选择本地的HTML文件;
(b)系统根据用户的操作,选择需要使用的浏览器;
(c)系统根据用户的操作,配置Http服务器的端口;
(d)系统根据用户的操作,启动系统中的性能分析工具;
(e)所述的性能分析工具根据预先配置的监测端口启动一个Http服务器,并记录服务器地址;
(f)所述的性能分析工具根据用户输入的URL和Http服务器的端口生成客户端URL;
(g)所述的性能分析工具打开浏览器,并让浏览器打开生成的客户端URL;
(h)所述的性能分析工具发出启动性能分析的事件通知;
(2)系统进行Javascript执行情况的数据收集操作,包括以下步骤:
(a)系统根据用户操作,打开性能分析工具的监测开关,并根据输入参数打开浏览器让浏览器转到指定的URL;
(b)所述的浏览器向Http服务器发送Http请求;
(c)Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号等内容,计算出真实的URL;
(d)Http代理服务器建立Http连接,转发该浏览器提交过来的数据,获取该URL的内容;
(e)Http代理服务器根据Http连接所返回的header中contentType判断该请求返回的类型,根据contenType进行资源处理操作,包括以下步骤:
(i)如果请求的类型是text/html,则调用编译引擎将该html编译为带有javascript性能分析代码的html代码。并将该代码输出到浏览器;
(ii)如果请求的类型是text/javascript,则调用编译引擎将该javascript代码编译为带有javascript性能分析代码的javascript代码。并将该代码输出到浏览器;该javascript性能分析代码为在每一个函数的前后所增加的性能分析代码,用于记录每个函数执行的起始时间、执行编号、调用堆栈等信息;
(iii)如果请求的类型是其他类型,则直接输出到浏览器;
(f)浏览器中的javascript所执行的某一函数之前先执行javascript性能分析代码,获得当前的时间,生成一个执行的编号;
(g)浏览器中的javascript所执行的某一函数之后再执行javascript性能分析代码,获得当前的时间,获取父函数的编号,用以记录调用堆栈等内容;
(h)浏览器中的javascript性能数据上报模块定时通过Ajax的方式向Javascript性能
分析服务器提交Javascript性能分析数据;该Javascript性能分析数据的格式为:[性能数据[函数编号,地址,行号,开始时间,结束时间,持续时间],调用关系数据];
(j)Javascript性能分析服务器将提交上来的数据转为Javascript性能数据模型;
(k)Javascript性能分析服务器发起Javascript性能数据模型更新通知;
(3)系统进行CPU、内存数据收集操作,包括以下步骤:
(a)所述的性能分析工具通过JNI调用C++的代码打开浏览器,C++的代码打开浏览器,并返回该浏览器的进程ID;
(b)所述的性能分析工具定时通过JNI调用C++代码获取该进程的CPU和内存数据;
(c)所述的性能分析工具发起Javascript性能数据模型更新通知;
(4)系统分别进行Http内容压缩数据、图片压缩数据、Http请求数的数据、浏览器缓存数据的收集操作;该Http内容压缩数据的收集操作,包括以下步骤:
(a)浏览器向Http代理服务器发送Http请求;
(b)所述的Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号的信息,计算出真实的URL;
(c)所述的Http代理服务器建立Http连接,并转发浏览器提交过来的数据,获取该URL的内容;
(d)所述的Http代理服务器记录本次Http请求的时间,数据量;
(e)所述的Http代理服务器调用Gzip压缩判断操作判断本次Http请求的返回数据是否经过Gzip压缩,包括以下步骤:
(i)如果本次Http请求的返回数据经过Gzip压缩,则直接返回步骤(f);
(ii)如果本次Http请求的返回数据没有经过Gzip压缩,则调用Gzip压缩函数压缩本次Http请求的内容;
(iii)所述的Http代理服务器根据压缩后的资源大小,计算出压缩比例;
(iv)所述的Http代理服务器更新Http压缩的数据模型;
(f)所述的Http代理服务器发出网络传输内容分析的数据模型更新通知;
该图片压缩数据的收集操作,包括以下步骤:
(a)浏览器向Http代理服务器发送Http请求;
(b)所述的Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号的信息,计算出真实的URL;
(c)所述的Http代理服务器建立Http连接,并转发浏览器提交过来的数据,获取该URL的内容;
(d)所述的Http代理服务器根据Http头中的内容类型contentType判断数据返回的类型;
(e)如果内容类型contentType为是image,则调用Image的压缩应用程序接口API,并压缩该图片;
(f)所述的Http代理服务器根据压缩后的资源大小,计算出压缩比例;
(g)所述的Http代理服务器更新图片压缩的数据模型;
(h)所述的Http代理服务器发出网络传输内容分析的数据模型更新通知;
该Http请求数的数据的收集操作,包括以下步骤:
(a)所述的浏览器向Http代理服务器发送Http请求;
(b)所述的Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号的信息,计算出真实的URL;
(c)所述的Http代理服务器建立Http连接,并转发浏览器提交过来的数据,获取该URL的内容;
(d)所述的Http代理服务器根据Http头中的内容类型contentType判断数据返回的类型;
(e)所述的Http代理服务器将text/javascript和text/css分类更新到Http请求数的数据模型中;
(f)所述的Http代理服务器根据TCP/IP协议的大小给出Http合并建议;
(g)所述的Http代理服务器发出网络传输内容分析的数据模型更新通知;
该浏览器缓存数据的收集操作,包括以下步骤:
(a)浏览器向Http代理服务器发送Http请求;
(b)所述的Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号的信息,计算出真实的URL;
(c)所述的Http代理服务器建立Http连接,并转发浏览器提交过来的数据,获取该URL的内容;
(d)所述的Http代理服务器根据Http头中的cache获得浏览器缓存设置,并调用浏览器缓存判断操作,包括以下步骤:
(i)如果所获得的浏览器缓存在当前日期之后,则返回;
(ii)如果所获得的浏览器缓存在当前日期之前或没有设置,则更新浏览器缓存数据模型;
(e)所述的Http代理服务器发出网络传输内容分析的数据模型更新通知;
(5)系统根据用户的查看请求,展现出相应的性能分析结果,包括以下步骤:
(a)系统根据用户的操作,查找相应的结果显示视图;
(b)显示相应的结果显示视图,该结果显示视图包括Http请求内容压缩分析视图、图片压缩数据分析视图、Javascript代码压缩分析视图、Http请求数数据分析视图、浏览器缓存数据分析视图、Javascript调用树的时间分析视图、Javascript函数执行统计分析视图、Javascript执行的CPU分析视图和Javascript执行的内存分析视图;该Http请求内容压缩分析视图的展示信息包括:
●Http请求内容的地址
●Http请求内容的Header
●Http请求的内容
●Http请求返回的Header
●Http请求返回的内容
●Http请求返回的内容大小
●Http请求返回的内容压缩后的大小
●Http请求返回的内容的压缩比;
该图片压缩数据分析视图的展示信息包括:
●图片的URL
●图片的类型
●图片的宽高
●图片的大小
●图片预览
●压缩后的图片大小
●图片的压缩比
●压缩后的图片预览;
该Javascript代码压缩分析视图的展示信息包括:
●Javascript的URL
●Javascript的大小
●Javascript压缩后的大小
●Javascript的压缩比。
该Http请求数数据分析视图的展示信息包括:
●Javascript文件的请求数及请求详细URL
●Javascript文件的建议请求数及文件合并列表
●CSS文件的请求数及请求详细URL
●CSS文件的建议请求数及文件合并列表
●浏览器缓存分析结果展示。
该浏览器缓存数据分析视图的展示信息包括:
●Http请求内容的URL
●Http请求的Cache时间
●Http请求的Cache的建议时间。
该Javascript调用树的时间分析视图的展示信息包括:
●Javascript调用树
●Javascript当前函数的函数名
●Javascript调用时间
●Javascript调用时间所占百分比
●Javascript调用时间所占百分比的图形化
●Javascript当前函数所在的URL
●Javascript当前函数所在行号。
该Javascript函数执行统计分析视图的展示信息包括:
●Javascript函数的函数名
●Javascript函数的调用次数
●Javascript函数的调用所占时间
●Javascript函数的平均时间
●Javascript函数的最大执行时间
●Javascript函数的最小执行时间
●Javascript函数的调用所占的百分比
●Javascript函数所在的URL
●Javascript函数所在的行号。
该Javascript执行的CPU分析视图的展示信息包括:
●浏览器在每个时间点的CPU使用率折线图
●在选择每个时间段时过滤出当前时间内执行的Javascript函数。
该Javascript执行的内存分析视图的展示信息包括:
●浏览器在每个时间点的内存大小折线图
●在选择每个时间段时过滤出当前时间内执行的Javascript函数。
在实际使用当中,本发明的互联网应用系统中实现跨浏览器的Web性能分析方法,包括网络传输内容分析和Javascript执行情况分析,其中包括以下步骤:
(1)用户启动性能分析工具;
(2)用户启动性能分析服务器;
(3)性能分析工具收集Javascript执行情况数据;
(4)性能分析工具收集CPU、内存数据;
(5)性能分析工具收集Http内容压缩数据、图片压缩数据、Http请求数据、浏览器缓存数据;
(6)用户查看性能分析结果。
所述的启动性能分析工具的操作包括以下步骤:
(1)用户输入需要分析性能的URL或者选择本地的HTML文件;
(2)用户选择需要使用的浏览器,如IE、Firefox、Chrome等;
(3)用户配置Http服务器的端口;
(4)用户点击启动按钮启动性能分析工具;
(5)性能分析工具根据预先配置的监测端口启动一个Http服务器,并记录服务器地址;
(6)性能分析工具根据用户输入的URL和Http服务器的端口生成客户端URL;
(7)性能分析工具打开浏览器,并让浏览器打开生成的客户端URL;
(8)性能分析工具发出启动性能分析的事件通知。
所述的Javascript执行情况数据收集操作包括以下步骤:
(1)用户打开性能分析工具的监测开关,工具根据输入参数打开浏览器并让浏览器转到指定的URL;
(2)浏览器向Http服务器发送Http请求;
(3)Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号等内容,计算出真实的URL;
(4)Http代理服务器建立Http连接,转发浏览器提交过来的数据,获取该URL的内容;
(5)Http代理服务器根据Http返回的header中contentType属性读取该请求返回的类型;
(6)如果请求的类型是text/html,则调用编译引擎将该html编译为带javascript性能分析代码的html代码。并将该代码输出到浏览器。javascript性能分析代码是在每一个函数的前后增加性能分析代码,记录每个函数执行的起始时间、执行编号、调用堆栈等信息;
(7)如果请求的类型是text/javascript,则调用编译引擎将该javascript代码编译为带javascript性能分析代码的javascript代码。并将该代码输出到浏览器。javascript性能分析代码是在每一个函数的前后增加性能分析代码,记录每个函数执行的起始时间、执行编号、调用堆栈等信息;
(8)如果请求的类型是其他类型,则直接输出到浏览器;
(9)浏览器中的javascript执行的某一函数之前,会先执行javascript性能分析代码,获得当前的时间,生成一个执行的编号;
(10)浏览器中的javascript执行的某一函数之后,会执行javascript性能分析代码,获得当前的时间,获取父函数的编号,用以记录调用堆栈等内容;
(11)浏览器中的javascript性能数据上报模块会定时通过Ajax的方式向Javascript性能分析服务器提交Javascript性能分析数据。提交的数据格式如下:
[性能数据[函数编号,地址,行号,开始时间,结束时间,持续时间],调用关系数据]
(12)Javascript性能分析服务器将提交上来的数据转为Javascript性能数据模型;
(13)Javascript性能分析服务器发起Javascript性能数据模型更新通知。
所述的CPU、内存数据收集操作包括以下步骤:
(1)性能分析工具通过JNI调用C++的代码打开浏览器。C++的代码打开浏览器,并返回该浏览器的进程ID;
(2)性能分析工具定时通过JNI调用C++代码获取该进程的CPU和内存数据;
(3)性能分析工具发起Javascript性能数据模型更新通知。
所述的Http内容压缩数据收集操作包括以下步骤:
(1)浏览器向Http服务器发送Http请求;
(2)Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号等内容,计算出真实的URL;
(3)Http代理服务器建立Http连接,转发浏览器提交过来的数据,获取该URL的内容;
(4)Http代理服务器记录本次请求的时间,数据量;
(5)Http代理服务器获取本次请求的返回数据的编码信息;
(6)如果本次请求的返回数据经过Gzip压缩,则直接返回;
(7)如果本次请求的返回数据没有经过Gzip压缩,则调用Gzip压缩函数压缩本次请求的内容;
(8)Http代理服务器根据压缩后的资源大小,计算出压缩比例;
(9)Http代理服务器更新Http压缩的数据模型;
(10)Http代理服务器发出网络传输内容分析的数据模型更新通知。
所述的图片压缩数据收集操作包括以下步骤:
(1)浏览器向Http服务器发送Http请求;
(2)Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号等内容,计算出真实的URL;
(3)Http代理服务器建立Http连接,转发浏览器提交过来的数据,获取该URL的内容;
(4)Http代理服务器根据Http头中的contentType判断数据返回的类型;
(5)如果contentType的类型是image,则调用Image的压缩API,压缩该图片;
(6)Http代理服务器根据压缩后的资源大小,计算出压缩比例;
(7)Http代理服务器更新图片压缩的数据模型;
(8)Http代理服务器发出网络传输内容分析的数据模型更新通知。
所述的Http请求数据收集操作包括以下步骤:
(1)浏览器向Http服务器发送Http请求;
(2)Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号等内容,计算出真实的URL;
(3)Http代理服务器建立Http连接,转发浏览器提交过来的数据,获取该URL的内容;
(4)Http代理服务器根据Http头中的contentType判断数据返回的类型;
(5)Http代理服务器将text/javascript和text/css分类更新到Http请求数数据模型中;
(6)Http代理服务器根据TCP/IP协议的大小给出Http合并建议;
(7)Http代理服务器发出网络传输内容分析的数据模型更新通知。
所述的浏览器缓存数据收集操作包括以下步骤:
(1)浏览器向Http服务器发送Http请求;
(2)Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号等内容,计算出真实的URL;
(3)Http代理服务器建立Http连接,转发浏览器提交过来的数据,获取该URL的内容;
(4)Http代理服务器根据Http头中的cache获得浏览器缓存设置;
(5)如果所获得的浏览器缓存在当前日期之后,则返回;
(6)如果所获得的浏览器缓存在当前日期之前或没有设置,则更新浏览器缓存数据模型;
(7)Http代理服务器发出网络传输内容分析的数据模型更新通知。
所述的Javascript性能分析编译引擎的实施方式如下:
(1)浏览器向Http服务器发送Http请求;
(2)Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号等内容,计算出真实的URL;
(3)Http代理服务器建立Http连接,转发浏览器提交过来的数据,获取该URL的内容;
(4)Http代理服务器根据Http返回的header中contentType判断该请求返回的类型;
(5)如果Http请求返回的contentType为text/html,则调用编译html操作;
(6)如果Http请求返回的contentType为text/javascript,则调用编译javascript操作;
(7)Http代理服务器把编译后的内容输出到浏览器。
所述的调用编译html操作包括以下步骤:
(1)Http代理服务器调用引擎管理类获到编译引擎;
(2)Http代理服务器调用编译引擎的编译方法编译html资源;
(3)编译引擎解析html文件内容,如果编译引擎遇到script标记并且该script标记没有设置src属性,则记录下script标记的行号,编译该script标记中间的Javascript。
所述的调用编译javascript操作包括以下步骤:
(1)Http代理服务器调用引擎管理类获到编译引擎;
(2)Http代理服务器调用编译引擎的编译方法编译Javascript资源。
所述的Javascript性能分析引擎的编译方式包括以下步骤:
(1)Javascript性能分析编译引擎解析javascript文件;
(2)Javascript性能分析编译引擎在解析到javascript函数时,记录当前函数的行号,并生成一个函数的唯一编号;
(3)Javascript性能分析编译引擎在该javascript函数之前加上性能分析代码,记录Javascript函数执行之前的时间;
(4)Javascript性能分析编译引擎在该javascript函数之后加上性能分析代码,记录Javascript函数执行之前的时间,并调用profile解析函数;
(5)当Javascript函数被调用之前,先通过new Date()的方式取得当前的时间,再通过$getProfileIndex函数获得执行时的编号;
(6)Javascript函数被调用之后,先通过new Date()的方式取得当前的时间,再调用jsprofile函数保存该函数的性能数据;
(7)Javascript性能代码通过Ajax方式定时向javascript性能分析服务器数据上报javascript性能数据。
所述的Javascript性能分析服务器的分析方式包括以下步骤:
(1)Javascript性能分析服务器接受Javascript性能分析代码发送的Ajax请求,调用JSON相关API把提交的数据转为JSON格式;
(2)Javascript性能分析服务器计算出所有javascript函数调用的时间;
(3)Javascript性能分析服务器计算出所有javascript函数的执行总时间,根据该时间计算出每个函数所占的时间;
(4)Javascript性能分析服务器统计出每个javascript函数的执行次数以及平均执行时间,最大执行时间和最小执行时间;
(5)Javascript性能分析服务器再把JSON格式的数据转换为Javascript调用树的时间数据和Javascript函数执行统计数据;
(6)Javascript性能分析服务器发出Javascript性能分析数据模型更新通知;
(7)结果展示UI更新Javascript调用树的时间分析、Javascript函数执行统计分析、Javascript执行的CPU分析和Javascript执行的内存分析的视图。
所述的CPU和内存分析包括以下步骤:
(1)在Java类中定义native方法;
(2)通过javah命令生成SystemInformation.h的C++头文件;
(3)使用C++实现该头文件,使用include命令引用该头文件;
(4)如果是windows操作系统,则调用NtQuerySystemInformation方法,获得某一进程的内存使用情况,通过某一时间段内进程的CPU占用时间与所有进程的CPU占用时间比计算出该进程的CPU占有率;
(5)如果是unix或linux操作系统,则使用top命令分析出当前进程的CPU占用率和内存使用情况;
(6)Javascript性能分析服务器发送CPU占有率和内存使用情况模型更新通知;
(7)结果展示UI更新Javascript执行的CPU分析和Javascript执行的内存分析的视图。所述的网络传输内容分析包括以下步骤:
(1)用户启动性能分析工具,性能分析工具打开浏览器并让浏览器转到指定的URL;
(2)浏览器向Http服务器发送Http请求;
(3)Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号等内容,计算出真实的URL;
(4)Http代理服务器建立Http连接,转发浏览器提交过来的数据,获取该URL的内容;
(5)Http代理服务器调用Http请求内容压缩过滤器分析Http请求内容压缩情况;
(6)Http代理服务器调用图片压缩过滤器分析图片压缩情况;
(7)Http代理服务器调用javascript代码压缩过滤器分析javascript代码压缩情况;
(8)Http代理服务器调用Http请求数过滤器分析Http请求数情况;
(9)Http代理服务器调用浏览器缓存过滤器分析浏览器缓存情况;
(10)Http代理服务器发送网络传输内容数据模型更新通知;
(11)结果展示UI更新Http请求内容压缩分析、图片压缩分析、Javascript代码压缩分析、Http请求数优化分析和浏览器缓存分析的视图。
在实际的实现过程中,所述的启动性能分析工具操作包括以下步骤:
(1)用户输入需要分析性能的URL或者选择本地的HTML文件;
(2)用户选择需要使用的浏览器,如IE、Firefox、Chrome等;
(3)用户配置Http服务器的端口;
(4)用户点击启动按钮启动性能分析工具;
(5)性能分析工具根据预先配置的监测端口启动一个Http服务器,并记录服务器地址;
(6)性能分析工具根据用户输入的URL和Http服务器的端口生成客户端URL;
(7)性能分析工具打开浏览器,并让浏览器打开步骤6生成的客户端URL;
(8)性能分析工具发出启动性能分析的事件通知。
所述的Javascript执行情况数据收集操作包括以下步骤:
(1)用户打开性能分析工具的监测开关,工具根据输入参数打开浏览器并让浏览器转到指定的URL;
(2)浏览器向Http服务器发送Http请求;
(3)Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号等内容,计算出真实的URL;
(4)Http代理服务器建立Http连接,转发浏览器提交过来的数据,获取该URL的内容;
(5)Http代理服务器根据Http返回的header中contentType判断该请求返回的类型;
i、如果请求的类型是text/html,则调用编译引擎将该html编译为带iavascript性能分析代码的html代码。并将该代码输出到浏览器。javascript性能分析代码是在每一个函数的前后增加性能分析代码,记录每个函数执行的起始时间、执行编号、调用堆栈等信息;
ii、如果请求的类型是text/javascript,则调用编译引擎将该javascript代码编译为带javascript性能分析代码的javascript代码。并将该代码输出到浏览器。javascript性能分析代码是在每一个函数的前后增加性能分析代码,记录每个函数执行的起始时间、执行编号、调用堆栈等信息;
iii、如果请求的类型是其他类型,则直接输出到浏览器;
(6)浏览器中的javascript执行的某一函数之前,会先执行javascript性能分析代码,获得当前的时间,生成一个执行的编号;
(7)浏览器中的javascript执行的某一函数之后,会执行javascript性能分析代码,获得当前的时间,获取父函数的编号,用以记录调用堆栈等内容;
(8)浏览器中的javascript性能数据上报模块会定时通过Ajax的方式向Javascript性能分析服务器提交Javascript性能分析数据。提交的数据格式为:
[性能数据[函数编号,地址,行号,开始时间,结束时间,持续时间],调用关系数据]
(9)Javascript性能分析服务器将提交上来的数据转为Javascript性能数据模型;
(10)Javascript性能分析服务器发起Javascript性能数据模型更新通知。
所述的CPU、内存数据收集操作包括以下步骤:
(1)性能分析工具通过JNI调用C++的代码打开浏览器。C++的代码打开浏览器,并返回该浏览器的进程ID;
(2)性能分析工具定时通过JNI调用C++代码获取该进程的CPU和内存数据;
(3)性能分析工具发起Javascript性能数据模型更新通知。
所述的Http内容压缩数据收集操作包括以下步骤:
(1)浏览器向Http服务器发送Http请求;
(2)Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号等内容,计算出真实的URL;
(3)Http代理服务器建立Http连接,转发浏览器提交过来的数据,获取该URL的内容;
(4)Http代理服务器记录本次请求的时间,数据量;
(5)Http代理服务器判断本次请求的返回数据是否经过Gzip压缩;
i、如果本次请求的返回数据经过Gzip压缩,则直接返回;
ii、如果本次请求的返回数据没有经过Gzip压缩,则调用Gzip压缩函数压缩本次请求的内容;
iii、Http代理服务器根据压缩后的资源大小,计算出压缩比例;
iv、Http代理服务器更新Http压缩的数据模型;
(6)Http代理服务器发出网络传输内容分析的数据模型更新通知。
所述的图片压缩数据收集操作包括以下步骤:
(1)浏览器向Http服务器发送Http请求;
(2)Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号等内容,计算出真实的URL;
(3)Http代理服务器建立Http连接,转发浏览器提交过来的数据,获取该URL的内容;
(4)Http代理服务器根据Http头中的contentType判断数据返回的类型;
(5)如果contentType的类型是image,则调用Image的压缩API,压缩该图片;
(6)Http代理服务器根据压缩后的资源大小,计算出压缩比例;
(7)Http代理服务器更新图片压缩的数据模型;
(8)Http代理服务器发出网络传输内容分析的数据模型更新通知。
所述的Http请求数据收集操作包括以下步骤:
(1)浏览器向Http服务器发送Http请求;
(2)Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号等内容,计算出真实的URL;
(3)Http代理服务器建立Http连接,转发浏览器提交过来的数据,获取该URL的内容;
(4)Http代理服务器根据Http头中的contentType判断数据返回的类型;
(5)Http代理服务器将text/javascript和text/css分类更新到Http请求数数据模型中;
(6)Http代理服务器根据TCP/IP协议的大小给出Http合并建议;
(7)Http代理服务器发出网络传输内容分析的数据模型更新通知。
所述的浏览器缓存数据收集操作包括以下步骤:
(1)浏览器向Http服务器发送Http请求;
(2)Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号等内容,计算出真实的URL;
(3)Http代理服务器建立Http连接,转发浏览器提交过来的数据,获取该URL的内容;
(4)Http代理服务器根据Http头中的cache获得浏览器缓存设置;
i、如果所获得的浏览器缓存在当前日期之后,则返回;
ii、如果所获得的浏览器缓存在当前日期之前或没有设置,则更新浏览器缓存数据模型;
iii、Http代理服务器发出网络传输内容分析的数据模型更新通知。
所述的Javascript性能分析编译引擎的具体实施方式包括以下步骤:
(1)浏览器向Http服务器发送Http请求;
(2)Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号等内容,计算出真实的URL;
(3)Http代理服务器建立Http连接,转发浏览器提交过来的数据,获取该URL的内容;
(4)Http代理服务器根据Http返回的header中contentType判断该请求返回的类型;
(5)如果Http请求返回的contentType为text/html,执行以下步骤:
i、Http代理服务器调用引擎管理类获到编译引擎;
ii、Http代理服务器调用编译引擎的编译方法编译html资源;
iii、编译引擎解析html文件内容,如果编译引擎遇到script标记并且该script标记没
有设置src属性,则记录下script标记的行号,编译该script标记中间的Javascript;
(6)如果Http请求返回的contentType为text/javascript,执行以下步骤:
i、Http代理服务器调用引擎管理类获到编译引擎;
ii、Http代理服务器调用编译引擎的编译方法编译Javascript资源;
(7)Http代理服务器把编译后的内容输出到浏览器;
上面所述的Javascript性能分析编译引擎的编译原理包括以下步骤:
(1)Javascript性能分析编译引擎解析javascript文件;
(2)Javascript性能分析编译引擎在解析到javascript函数时,记录当前函数的行号,并生成一个函数的唯一编号;
(3)Javascript性能分析编译引擎在该javascript函数之前加上性能分析代码,记录Javascript函数执行之前的时间;
(4)Javascript性能分析编译引擎在该javascript函数之后加上性能分析代码,记录Javascript函数执行之前的时间,并调用profile解析函数。Javascript性能分析编译引擎编译javascript函数之前和之后的代码示例如下:
编译之前
function a(c){
alert(c);
c1();
}
编译之后
function a(c){
var_start=new Date();
var_func=′a′;
var_index=′1′;
var_url=′test.html′;
arguments[″_index″]=$getProfileIndex();
var_line=′14′;
var_result=function(){
alert(c);
c1();
}.apply(this,arguments);
var_end=new Date();
$jsprofile(_start,_end,_func,_index,_url,_line,arguments);
return_result;
}
(5)当Javascript函数被调用之前,先通过new Date()的方式取得当前的时间,再通过$getProfileIndex函数获得执行时的编号;
(6)Javascript函数被调用之后,先通过new Date()的方式取得当前的时间,再调用jsprofile函数保存该函数的性能数据;
(7)Javascript性能代码通过Ajax方式定时向javascript性能分析服务器数据上报javascript性能数据。上报的数据格式示例如下:
[{
funcName:′a′,
start:1257484481449,
end:1257484481460,
index:′1′,
url:′test.html′,
line:′14′,
funcId:2,
isRoot:false,
childIds:[3,4]
}]
所述的Http代理服务器的具体实施方式如下:
Http代理服务器是互联网应用系统中实现跨浏览器的Web性能分析方法的基础它启动了一个Socket Server,通过解析Http请求,根据不同的Http请求转到不同的数据分析器。
Http代理服务器的模型请参阅图6所示。
所述的Javascript性能分析服务器的具体实施方式包括以下步骤:
(1)Javascript性能分析服务器接受Javascript性能分析代码发送的Ajax请求,调用JSON相关API把提交的数据转为JSON格式;
(2)Javascript性能分析服务器计算出所有javascript函数调用的时间;
(3)Javascript性能分析服务器计算出所有javascript函数的执行总时间,根据该时间计算出每个函数所占的时间;
(4)Javascript性能分析服务器统计出每个javascript函数的执行次数以及平均执行时间,最大执行时间和最小执行时间;
(5)Javascript性能分析服务器再把JSON格式的数据转换为Javascript调用树的时间数据和Javascript函数执行统计数据;
(6)Javascript性能分析服务器发出Javascript性能分析数据模型更新通知;
(7)结果展示UI更新Javascript调用树的时间分析、Javascript函数执行统计分析、Javascript执行的CPU分析和Javascript执行的内存分析的视图。
所述的CPU和内存分析的具体实施方式包括以下步骤:
(1)在Java类中定义native方法,方法定义如下:
public class SystemInformation {
public static native int getCpuProcessUsage(int pid);
public static native int getMemProcessUsage(int pid);
}
(2)通过javah命令生成SystemInformation.h的C++头文件,文件定义如下:
#include<jni.h>
#ifndef_Included_SystemInformation
#define_Included_SystemInformation
#ifdef_cplusplus
extern″C″{
#endif
JNIEXPORT jint JNICALL Java SystemInformation_getCpuProcessUsage
(JNIEnv*,jclass,jint);
JNIEXPORT jint JNICALL Java_SystemIntormation_getMemProcessUsage
(JNIEnv*,jclass,jint);
#ifdef_cplusplus
}
#endif
#endif
(3)使用C++实现该头文件,使用include命令引用该头文件;
(4)如果是windows操作系统,则调用NtQuerySystemInformation方法,获得某一进程的内存使用情况,通过某一时间段内进程的CPU占用时间与所有进程的CPU占用时间比计算出该进程的CPU占有率;
(5)如果是unix或linux操作系统,则使用top命令分析出当前进程的CPU占用率和内存使用情况;
(6)Javascript性能分析服务器发送CPU占有率和内存使用情况模型更新通知;
(7)结果展示UI更新Javascript执行的CPU分析和Javascript执行的内存分析的视图。所述的网络传输内容分析的具体实施方式包括以下步骤:
(1)浏览器向Http服务器发送Http请求;
(2)Http代理服务器根据本次Http请求的地址、用户配置的URL和端口号等内容,计算出真实的URL;
(3)Http代理服务器建立Http连接,转发浏览器提交过来的数据,获取该URL的内容;
(4)Http代理服务器调用Http请求内容压缩过滤器分析Http请求内容压缩情况;
(5)Http代理服务器调用图片压缩过滤器分析图片压缩情况;
(6)Http代理服务器调用javascript代码压缩过滤器分析javascript代码压缩情况;
(7)Http代理服务器调用Http请求数过滤器分析Http请求数情况;
(8)Http代理服务器调用浏览器缓存过滤器分析浏览器缓存情况;
(9)Http代理服务器发送网络传输内容数据模型更新通知;
(10)结果展示UI更新Http请求内容压缩分析、图片压缩分析、Javascript代码压缩分析、Http请求数优化分析和浏览器缓存分析的视图。
采用了上述的互联网应用系统中实现跨浏览器的Web性能分析系统及方法,由于影响互联网应用性能的问题主要有两个方面:网络传输速度和Javascript的执行速度,本发明的性能分析包括网络传输内容的分析和代码执行情况分析等内容,并包括了网络传输内容分析和Javascript执行情况分析,其中,网络传输内容分析包括以下内容:Http请求内容压缩分析、图片压缩分析、Javascript代码压缩分析、Http请求数优化分析和浏览器缓存分析。而Javascript执行情况分析则包括Javascript调用树的时间分析、Javascript函数执行统计分析、Javascript执行的CPU分析和Javascript执行的内存分析,每一个分析功能都包含数据采集、数据分析和分析结果展示几个方面的内容,从而实现了跨浏览器的Javascript性能分析,提供了性能分析的统一途径,提高了性能分析的效率,不仅操作简单形象,而且快捷方便,整个性能分析环境的运行效率较高,工作性能稳定可靠,适用范围较为广泛;不仅如此,该方法还能够以图形化的方式向用户报告性能结果,给出优化建议,为互联网应用的性能调优打下了坚实的基础。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。
机译: 在基于web的应用中处理并发事件的方法,支持系统和使用该方法的应用系统
机译: 基于web的应用系统中的存储器中的业务对象管理装置及其方法
机译: 基于web的应用系统中的存储器中的业务对象管理装置及其方法