CN101194247B - 服务器控制的客户端性能测量技术 - Google Patents

服务器控制的客户端性能测量技术 Download PDF

Info

Publication number
CN101194247B
CN101194247B CN02810689XA CN02810689A CN101194247B CN 101194247 B CN101194247 B CN 101194247B CN 02810689X A CN02810689X A CN 02810689XA CN 02810689 A CN02810689 A CN 02810689A CN 101194247 B CN101194247 B CN 101194247B
Authority
CN
China
Prior art keywords
data item
customer set
data
performance
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
CN02810689XA
Other languages
English (en)
Other versions
CN101194247A (zh
Inventor
史蒂夫·维瓦恩特
阿尔桑兰·法鲁克
贾迪普·马尔法塔
马努·舒克拉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Publication of CN101194247A publication Critical patent/CN101194247A/zh
Application granted granted Critical
Publication of CN101194247B publication Critical patent/CN101194247B/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0686Additional information in the notification, e.g. enhancement of specific meta-data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/091Measuring contribution of individual network components to actual service level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/022Capturing of monitoring data by sampling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/289Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Abstract

本发明提供了用于测量客户端性能的系统和方法,包括:在一个要发送到客户程序(114)的数据项(105)到达客户程序(114)之前,截取所述数据项(105)。修改所述数据项(105),产生包括代码(108)的修改过的数据项(107)。该代码(108)使客户装置(110)上的处理器(116)测量与该数据项(105)所关联的服务有关的性能。基于由测量性能得到的测量结果,该代码(108)还使处理器(116)执行一个或更多动作。所述修改过的数据项(107)被发送到客户程序(114)。

Description

服务器控制的客户端性能测量技术
技术领域
本发明涉及对从网络服务器获得服务的网络客户端性能的测定,尤其涉及对与所提供服务有关的网络客户性能的测量和响应进行控制的技术。
背景技术
很多企业希望使用因特网来获得迅速增加的代理商和客户。因特网是由多个计算机网络组成的公共网络,每个计算机网络都具有一个或多个个节点。因特网利用开放的标准协议对节点寻址,并将信息从一个节点向另一节点传送。用户通过登录到网络上的一台计算机上来访问因特网,该因特网通常属于因特网服务提供商(ISP),并被其操作。通常,用户在自己的计算机与ISP计算机之间建立可切断的链接。运行在用户计算机(客户装置)上的客户应用程序(客户端进程)与运行在因特网上的不同计算机(服务器装置)上的服务器应用程序(服务器进程)相互作用。客户进程发起与发送给服务器装置的请求的通讯,从而从应用程序请求服务。应用程序通过完成一些服务(包括将一些内容发送回客户端进程)来进行响应。
万维网(the Web)是在整个因特网上由各种服务器提供的可用服务的集合,能够被特定客户端(称之为网络浏览器)使用超文本传输协议(HTTP)进行访问。利用网络浏览器,用户能够在网上选择使用自己的统一资源定位器(URL)名来标识的服务,并具有以由服务器执行动作的形式提供给用户的服务和返回客户端的内容。内容包括一个或更多的超文本标识语言(HTML)页面。返回的内容通常包括正文信息,并且经常包括图片、视频、以及音频元素。返回内容中的一些元素与链接相关联,其中每个链接包括指向网上的另一资源的URL。当浏览器用户选定与某一链接关联的元素时,浏览器向内含的URL发送服务请求。网络上与URL关联的位置被称为网络站点。
网络服务的提供方往往关心服务用户的体验。使用户体验到尽可能受欢迎的服务是服务提供商最感兴趣的。通常,当准确、方便、并迅速地提供服务时,用户能够享受到满意的网络服务体验。当提供的服务和返回的内容是用户所期望的时,服务的提供是准确的。如果用户用很少的手动操作(如击键等)和短时间的思考,就能得到想要的服务和内容,那么服务的提供是方便的。如果在请求服务和得到表示服务被执行的返回内容之间,用户没有发现频繁或长时间的停顿,那么资源的提供是迅速的。
用户方的体验与服务器应用程序和服务器装置的性能有关。例如,服务器收到请求的时间和内容从服务器发出的时间之间所花费的时间被用户感觉到的是一种延迟。延迟部分受制于服务器进程进行的处理和服务器装置的处理能力。从发送内容时(如当订单或退款确认书发送到客户程序)到服务全部完成时(如当数据项被发送或信用卡帐户进行过帐时)之间的时间会产生各种不同的延迟。服务器端的性能可由企业来监控,并且如果断定其性能导致产生不满意的用户体验,还可由企业进行纠正。例如,由大量请求引起的可察觉的延迟可通过增加服务器装置或改进站点专用装置来纠正,以使延迟保持小的察觉不到。
用户方的体验与网络性能和客户进程有关,其不能被服务器应用程序或服务器装置控制或容易地监控。有些延迟是在请求和返回内容经过网络时引起的。有些延迟是在客户装置将内容呈现在客户装置显示器上时引起的。还有一些是在服务器端不明显的其它性能因素。例如,在为寻找所要资源而进行的盲目尝试中,用户可能会进行额外的击键和鼠标移动。用户的这种额外努力往往不能被站点设计者所预知。设计者不能预知此类问题的部分原因是,当设计者测试站点时,设计者已经知道在站点上什么是可用的。
客户端察觉到的性能不容易在服务器端进行监视,从而不容易被负责站点的一方利用。缺少对在客户端察觉到的性能的了解,服务提供商就不能对与察觉到的性能有关的很多问题进行响应,如额外延迟和过多击键等。
服务提供商获得客户端性能测量结果的一种方法是,在分布于网络不同位置的计算装置上运行一套代理程序(代理器),在此基础上估计客户端的性能。为了模拟浏览器用户,每个代理程序从一个站点上定期请求一项或更多项服务,并且接受(下载)一个或更多个HTML页面。在运行代理程序的装置上发送请求与收到或显示返回内容之间花费的时间被用作察觉到的客户机响应时间的估测。估测的客户机响应时间在该套代理程序上的分布被用来代表实际用户体验的实际客户端响应时间的分布。
虽然适于许多目的,该“模拟代理程序”方法有一些缺陷。例如,模拟代理程序方法通常仅能测量站点上的少数服务的响应时间;有些服务根本测试不到。模拟代理程序方法不能测量真实用户感知站点性能的实际位置的响应时间。模拟代理程序方法不能模拟用户杂乱无章的和过多的光标移动或过多的击键。模拟代理程序法通过与实际用户匹配的代理程序,在站点上增加了虚假负载。这样,代理程序本身造成察觉性能的降低。另外,为了向服务提供商报告估测的客户机响应时间,模拟代理程序法在网络上增加了额外的传输量。
第二种方法是在客户端装置上安装代理程序。该客户端代理程序用来测量实际用户的客户端进程下载页面的客户端响应时间。虽然适于许多目的,客户端代理程序法也有一些缺陷。客户端代理程序法包括在客户装置上安装并维持代理软件的繁琐步骤。例如,有些代理程序采取专用装置驱动程序的形式,映射到其它装置驱动器的存储器中,并记录那些装置驱动器的某些活动。在这个例子中,当那些其它装置驱动器升级或被更换时,代理程序必须被维护以保持兼容性。客户端代理程序法还包括保存、查找、安排(schedule)检测到的响应时间,并通过网络将其发送给服务提供商的繁琐步骤。
基于上述,完全需要能够使提供站点的服务提供商测量和响应与站点上提供的服务有关的客户端性能事项的技术。
发明内容
用于测量客户端性能的技术包括:在将被发送到客户端程序的数据项到达客户机程序之前,截取该数据项。修改该数据项,产生包含代码的修改过的数据项,该代码能使客户端装置上的处理器测量关于与该数据项相关联的服务的性能。基于由该测量性能步骤产生的测量结果,该代码还能使处理器执行一个或更多动作。该修改过的数据项被发送给客户机程序。
根据本发明的另一方面,响应客户端性能的技术包括截取由该应用程序产生的数据项。网络将运行客户程序的客户端装置连接到被配置为运行该应用程序的服务器装置上,以提供服务。相对于该应用程序明显地修改该数据项,产生修改过的数据项,其包含代码。该代码使客户端装置上的处理器测量与该应用程序提供的服务有关的性能。基于由测量性能产生的测量结果,该代码使处理器向服务器装置发送指示该测量结果的数据。该修改过的数据项被发送给所述客户端程序,并且指示所述测量结果的数据被接收并储存在数据库中。基于该数据,确定性能是否低于阈值。如果性能已低于该阈值,则发送修改消息。
根据本发明的另一方面,提供了一种计算机可读介质,其承载有数据,通过在带有处理器的装置的处理器上运行的客户端程序,指示呈现在装置显示器上的元素。该计算机可读介质还承载有在该装置接收到时运行的第一指令序列。该计算机可读介质还承载有第二指令序列,在第一指令序列到达后通过客户机程序调用。第二指令序列使处理器测量与在显示器上呈现元素有关的性能。第二指令序列基于通过测量性能得到的测量结果,还使处理器执行动作。第一指令序列使客户机程序将第二指令序列与该数据指示的元素关联起来。
这些技术能够使在每次从网络服务发送数据项给客户程序时服务提供商都能够自动修改该数据项,从而消除了在客户机装置上安装和维护性能监控代理程序的繁琐步骤。在这些技术的各种实施例中,这种修改对服务器应用程序设计者来说是明显的,从而易于应用到新的和已有的服务器应用程序上。这些技术还使得服务提供商能够获得由真实用户体验到的实际性能测量结果,并且不需要在站点上放置虚假负载。修改过的内容中的代码能够被定制,以提供任何想要的响应,从向服务提供商报告这些测量结果以由服务提供商进行分析,到自动通知客户端程序的用户,到自动诊断性能不满意的原因,例如通过使性能问题与客户端程序或客户端装置的特定部件相联系来实现。
附图简要说明
本发明是借助实例来描述的,但并不用于限制,在附图的图形中,相同的参考数字代表相同的部件,其中:
图1是根据实施例示出网络上的服务器和客户端的方块图;
图2是根据一个实施例示出了用于控制对客户端性能的响应的方法的流程图;
图3是示出了由运行在服务器装置上的假想应用程序产生的示例内容的方块图;
图4A是根据实施例示出了发送给客户端的修改内容中所含的第一事件处理程序的流程图;
图4B是根据实施例示出了发送给客户端的修改内容中所含的第二事件处理程序的流程图;
图4C是根据实施例示出了发送给客户端的修改内容中所含的第三事件处理程序的流程图;
图4D是根据实施例示出了发送给客户端的修改内容中所含的第四事件处理程序的流程图;
图5A是根据实施例示出了发送给客户端的修改内容中所含的性能测量代码的流程图的第一部分;
图5B是根据实施例示出了发送给客户端的修改内容中所含的性能测量代码的流程图的第二部分;
图6是根据实施例示出了对客户端性能测量结果进行分析的方法的流程图;以及
图7是示出了可实施本发明的实施例的计算机系统的方块图。
具体实施方式
下面说明服务器控制的客户端性能测量技术。在以下描述中,出于解释的目的,阐明了许多具体细节,以便提供对本发明的透彻理解。然而,对于本领域技术人员显而易见的是,即使没有这些特定细节,本发明也可实施。在其它情况下,为了避免对本发明造成不必要的模糊,公知的结构和装置以框图形式示出。
结构单元概述
结构单元和根据本发明的一个实施例作用于其上的过程如图1所示。图1是方块图,根据一个实施例示出了服务提供商的服务器装置102和连接到网络120上的客户端装置110。在客户端装置110上运行客户端程序114,该客户端程序114用来请求来自在连接到网络上的服务器装置上运行的应用程序的服务。服务器装置102包括应用程序104,其是用来响应来自客户端程序的请求通过网络提供服务的程序。例如,服务器装置102上的网络服务器程序将来自客户机程序114的请求发送到应用程序104,并向网络发送响应。在某些实施例中,网络服务器程序包括服务器端小程序103,用于将特殊的功能添加到网络服务器上。
客户端装置通过代理服务器124连接到网络上,该代理服务器124向一些客户端装置提供一项或多项通用服务,如安全等。在其它实施例中,客户端装置不通过代理服务器124而直接连接到网络120上。如图1所示,服务器装置102通过专用代理服务器122连接到网络120上,代理服务器122向多个服务器提供一项或多项通用服务,如安全等,如下文所述。在其它实施例中,服务器装置102可以直接连接到网络上,而不通过特定代理服务器122。
根据图1,响应通过网络120收到的来自客户端程序114的请求,应用程序104产生数据项105,以通过网络发送到客户端程序114。数据项105通常表示可通过网络提供的任何内容形式。数据项105可以由应用程序104以本领域公知的任何方式产生,如通过在接收客户端请求前取回产生并存储的静态网页,或者在请求时通过基于请求和系统状态动态地产生网页。系统状态包括数据库的当前数据项、软件的当前配置、当前时间、等等。
已经产生数据项105后,内嵌工具程序106在数据项105到达客户端之前截取数据项105,并修改数据项105,以基于原始数据项105产生修改数据项107。内嵌工具程序106如此命名,是因为修改实质上将改编(instrument)数据项,以测量客户端性能。
根据一个实施例,修改过数据项107含有代码,当被客户端程序114收到时,该代码使客户机装置110上的一个或更多个处理器测量与应用程序104提供的服务有关的性能,并基于至少一种由此进行的测量完成一个或更多动作,以响应测得的性能,如下所述。
根据一个实施例,一些代码108被预定义并储存在服务器装置102上。内嵌工具程序106通过将预定义代码108嵌入来修改原始数据项,以使修改过的数据项107包含预定义代码108。在一些实施例中,所有嵌入修改数据项107内的代码都是预定义的。在其它实施例中,一些代码是预定义的或者没有代码是预定义的。在一些涉及万维网的实施例中,在服务器装置102上运行的网络服务器程序执行嵌入工具程序106。在另一个实施例中,网络服务器的服务端小程序103运行嵌入工具程序106。在一些实施例中,数据项105、预定义代码108、嵌入工具程序106、和修改过的数据项107驻留在专用代理服务器122上,如下所述。
如图1所示,客户端程序114包括性能测定工具116,作为修改过的数据项中的代码的结果。性能测定工具116是测量客户端性能的某些方面并基于测量结果起作用的程序。
根据一个实施例,生成的一个或更多个测量结果被储存在客户端装置110的存储器中或存储装置上的测量数据结构118中。在其它实施例中,性能测定工具116作为独立于客户程序114之外的程序在客户机装置110上运行。在有些其它实施例中,测量数据结构118存储在代理服务器124的存储器中或储存装置上。
如图1所示,客户端性能的测量结果返回服务器装置102并储存在记录测量结果的日志193中。下面描述在服务器上记录测量结果的几种方法。示出的一个或更多分析和响应测量性能的程序194在服务器装置102上运行。程序194进行的分析可以包括确定一个或更多个客户机装置上的性能趋势。响应可以包括将低于某一预定的性能阈值水平的性能通知应用程序管理员。如图1所示,基于记录的测量结果的信息被储存在测量数据库196中,如关系数据库,以支持分析和响应程序194。在其它实施例中,日志193中记录的测量结果、或者分析和响应程序194、或者数据库196、或者某些组合,驻留在连接到网络上的一个或更多的其它装置上,如专用代理服务器122,考虑到提供应用程序104的服务提供商的利益,被控制。
功能概述
图2是示出了根据一个实施例的用于控制对客户端性能的响应的方法200的流程图。根据一个实施例,图1中的嵌入工具程序106执行图2中描述的步骤,例如,运行嵌入工具程序106的网络服务器或服务器端小程序执行图2中的步骤。
在步骤202中,截取应用程序产生的数据项。在一些实施例中,对网络服务器进行编程以截取应用程序产生的数据项。在其它实施例中,增加到网络服务器上的服务器端小程序截取该数据项。在一个实施例中,网络数据项在通过网络传送之前被储存在专用代理服务器122中,修改该存储进程(caching process),以执行对该数据项的修改。
在采用高速缓冲存储器的实施例中,初始数据项从其最初来源到高速缓冲存储器中,然后从高速缓冲存储器再到一个或更多目的地。当数据项储存在高速缓冲存储器中时,或每当数据项被从高速缓冲存储器发送到目的地时,对数据项的修改可以发生在该数据项储存在高速缓冲存储器之前。在一个实施例中,在被从原始来源传送以后但在被发送到客户机装置110之前,数据项被储存在代理服务器124上。
确定是否修改截取到的数据项
在一些实施例中,修改所有截取到的数据项,且不执行步骤204。但是,只对某些截取到的数据项进行修改通常是有利的。
在步骤204中,确定是否满足修改数据项的条件。例如,假设站点生成涉及图像、视频流、和音频流的HTML页面。图像、视频流、和音频流分别从该网页自行发送。如果所关心的性能是页面完全载入的时间,那么代码可以附着在页面上并且不需要附在分别发送的页面的每一元素上。
对于另一示例,服务提供商对载入应用程序发生错误时发送的页面所花费的时间不感兴趣,所以程序106将确定每一截取到的数据项是否都是错误页面,并将不改编(instrument)错误页面。
对于另一示例,仅改编一定百分比的通过应用程序产生的数据项可以提供性能的统计测量。在这种情况下,通过应用程序产生的多个数据项中只有一个将被改编。例如,程序106能够设置为仅修改其截取到的一定百分比的数据项。在这种统计抽样中,用于确定是否修改截取到的数据项的一个因素是统计抽样表。例如,计算产生并发送到一个或更多客户机的数据项的数量。将该计数与抽样统计表对比,举例来说,每第一百个计数与截取到的数据项的1%样本相对比。或者,处理程序106可以设置成以一定的比例(例如每分钟修改一个数据项)选择数据项进行修改。
在一个实施例中,用于确定是否修改截取到的数据项的一个因素是数据项的类型,其类型可由与该数据项相关的多用途网际邮件扩充协议(MIME)表示。在先于数据项的其它数据到来的标题区中识别MIME类型。例如,可交换图像文件格式(GIF)的图像的MIME类型是“image/gif”,纯文本的MIME类型是“text”。在一个实施例中,仅修改特定MIME类型的数据项。
在另一实施例中,用于确定是否修改特定数据项的因素包括数据项的名称。例如,一个网页具有一个统一资源定位器(URL)名称,用作在网上查找该页面的参考。在一个实施例中,只有页面名称与特定串匹配的数据项才被修改。正常的串操作表达式可用于指定想要的匹配。例如,表达式“*catalog*”指定所有包含单词“catalog”的URL。
在步骤206中,确定是否满足修改数据项的条件。例如,确定MIME类型是否为“text”。再例如,确定URL是否与表达式“*catalog*”匹配。再例如,确定计数器是否可被100整除。若是,控件(control)进行至步骤208,以修改该数据项。若否,控件进行至步骤220,以向客户机端程序发送未修改的数据项。
在步骤208中,修改数据项,以嵌入能使客户机装置测量性能并根据测量结果进行动作(act)的代码。将在下一节对步骤208作更详细地描述。
在步骤210中,修改过的数据项被发送到客户端程序。
在步骤220中,未修改的数据项被发送到客户端程序。
数据项实例
下面,通过使用图3中描述的数据项实例的例子,描述本发明的实施例。图3是方块图,示出了数据项实例显示在客户端上时,由运行在服务器装置上的假定应用程序产生的数据项实例。在此例中,该数据项是由四个框架362a、362b、362c、362d组成的框架集,其通过客户机装置显示器上浏览器窗口360中的网络浏览器显示。网络浏览器是客户端程序。每一框架保持一个HTML页面。网络浏览器还显示光标361,网络浏览器的用户使用客户机装置的键或指示装置或二者进行操作,使得光标361指示显示器上的某一位置。
第一框架362a中的HTML页包括数个网页元素,例如文本区364和用户可以输入数据的表格370。第一框架还包括多个称之为链接366的网页元素。当用户通过将光标361定位在链接上并点击(例如按下客户机装置上的键)而选择链接时,按照送至网络浏览器的数据项中与该链接关联的URL地址,产生对网络上另一网页的请求。链接常常以高亮的说明文本或按钮显示,数据项中关联的URL地址常常不出现在显示器上。例如,链接366a是文本区364中的高亮文本,链接366b、366c、366d显示为单独的高亮串,而链接366e显示为标有“NEXT”的按钮。在关联的URL上的另一网页通常是由产生已显示的HTML页的同一应用程序产生的另一HTML页。
第一框架362a中的表格370包括三个网页元素:两个输入区372a、372b;以及标有“提交(SUBMIT)”的按钮。用户通过将光标移动到一个输入区上并点击,选择输入区372a、372b中的一个。然后用户通过按下客户机装置上的键,将数据输入选定的输入区。用户可以反复选择和输入数提交按钮并点击。响应于对提交按钮的点击,浏览器将输入区372a、372b中的数据发送到网络上的应用程序。响应于收到该数据,该应用程序继续进行基于输入的服务,常常是产生另外的HTML页面和框架集。
性能实例
提供图3描绘的数据项实例的服务提供商希望网络浏览器用户与所描绘的框架集交互时得到良好的性能。在本实例中,服务提供商对两种性能测量感兴趣。第一测量是在点击一个链接或提交按钮与网络浏览器在浏览器窗口中完成下一个框架集的显示之间的用户察觉到的响应时间。该第一测量表明站点被用户察觉的速度。如果响应时间察觉不到或小于很少的几秒,则该测量的性能良好。
第二测量是从框架集通过浏览器显示时直到下一个链接或发提交按钮被点击时光标的移动量。该测量表明用户完成与数据项的交互所需付出的努力的程度。通常,光标移动的越远,用户付出的努力就越大。如果光标移动量很小,则该测量的性能良好。
在通常的系统中,用户察觉的响应时间和光标移动量都不易报告给服务器,因此,二者都不容易为服务提供商所利用。
性能信息实例在多个方面对服务提供商是有价值的。例如,在服务提供商提供承载网络或虚拟专用网(VPN)上的应用程序的主机上,常常用一个服务级别协议说明最小可接收性能。如果可得到用户察觉响应时间的测量,则服务级别协议能以指定数量用户的响应时间的形式表达,且服务提供商能提供服务级别报告以根据该协议进行监控。
响应时间测量结果还允许服务提供商在性能下降到无法接受或不适应的水平之前,检测性能逐渐变差的倾向,例如,增加同一数据项和客户装置的响应时间。
而且,与客户机装置有关的响应时间信息能使服务提供商向用户组织报告哪些客户机装置具有不寻常的响应时间问题。例如,如果特定客户机装置DeviceX重复显示接收和显示特定框架的响应时间为42秒,而在同时运行的大多数装置能够在7秒内接收和显示,那么DeviceX就可能有问题。这样的报告能使用户组织映射(target)DeviceX或其网络连接,或同时映射这二者,以进行调查或可能的纠正作业。
响应时间还能用于识别数据项具有不合理的显示问题。然后,服务提供商能映射该数据项,以进行重新设计。同样,光标移动量也能用于识别数据项的混乱排布,导致用户过多地前后移动光标。接着,服务提供商能注意该数据项,以进行重新设计。
配合与响应时间相关联的关于浏览器类型和版本的辅助数据,服务提供商能够识别受一套特定的浏览器及版本限制的显示问题。然后服务提供商能通知浏览器的用户组织升级适合于组织活动的浏览器。而且,服务提供商还能生成数据项的第二版,即用于属于该特定集合的浏览器版本的能以更短响应时间传送和显示的较简单的数据项。当在用户装置上检测到的浏览器版本是这一特定集合的成员时,使用该数据项的两个版本,服务提供商通过产生第二版数据项,能够动态地改变其数据项。
响应时间测量还能使装置提供商建立用于性能突然降低的程序。例如,为了对响应时间突然增加作出响应,服务提供商能够使服务器或客户机触发使网络流量分流或改向、或通知系统管理员的程序,或者使服务器只产生更易传送或显示的简易版本的数据项。
响应时间测量还能使服务提供商诊断并过滤服务器端性能规格(metrics)。服务提供商通常收集支持站点的服务器系统上量化用量和计算资源性能的大量规格。这种规格可以数百计,并且数种元素(component)中的每一个都包括:中央处理器用量、存储器用量、磁盘用量、数据库缓冲存储器用量等。在不同时间,一些规格形成峰值,如超过舒适操作极限的极端峰值。并非每一种峰值都影响用户察觉的响应时间。利用响应时间测量,可以检测到服务器端性能峰值与察觉到的响应时间影响之间的相关性。然后服务提供商能够集中注意并尽力增加那些元素和资源的容量或减少对这些增加那些元素和资源的使用,那些元素和资源的峰值非常严重地影响了客户机程序用户。
性能工具实例
根据本发明的一个实施例,通过应用程序产生的代码嵌入数据项中以测量客户端性能,并对得到的测量结果进行响应。根据一个实施例,在用户选择页面时间与页面完全显示时间(“点击到眼球的时间(click to eyeball time)”)之间的延迟通过下面的两步程序进行测量:
(1)将第一套代码嵌入到第一网页中。第一套代码与第一网页上的控件(control)相关联,用于请求第二网页。当选定控件时执行该第一套代码。该第一套代码记录选定该控件的时间。
(2)将第二套代码嵌入到第二网页中。当第二网页完全显示时,执行该第二套代码。该第二套代码记录该第二网页完全显示所需要的时间。
第一套代码记录的时间与第二套代码记录的时间的差值是第二网页的点击到眼球的时间。
在很多实施例中,不论是第一套代码还是第二套代码都被嵌入通过应用程序产生的每一网页中。
点击到眼球和事件计数测量
在一个实施例中,性能测量工具确定网页的点击到眼球的时间,其作为用户点击链接(或提交按钮)时的提交时间和下一框架显示在网络浏览器上的载入时间之间的差值。当用户点击链接或提交按钮时,提交时间在由网络浏览器调用的第一工具事件处理事务中确定,如下面参照图4A所作的更详尽的描述。当框架集显示时,载入时间在由网络浏览器调用的另一工具事件处理事务中确定。如下面参照图4B所作的更详尽的描述。
除上面描述的点击到眼球的测量之外,将描述一实施例,其中在从网页载入直到下一网页被请求的时间内,性能测量工具还通过对有关激活网页上的数据项及改变网页上的数据项的事件进行计数,从而来确定光标移动量。当每一框架显示时,计数器被重置为被网络浏览器调用的第二工具事件处理事务中的无效值,如下面参看图4B所作的更详尽的描述。当用户改变或集中注意力在网络元素时,计数器值储存在由网络浏览器所调用的第三工具事件处理事务中,如下面参看图4D所作的更详尽的描述。
根据一实施例,提交时间、载入时间、以及计数器值的测量结果保存在优选文件中,同时也称之为Cookie。Cookie是由客户机装置上的网络浏览器创建的用来响应HTML页面中的脚本的数据结构。网络浏览器自动将Cookie随后来的请求发送到提供该HTML页面的同一服务器。
工具事件处理器(INSTRUMENT EVENT HANDLERS)
根据一个实施例,在包含该工具的该网页的浏览器接收性能测量工具的第一部分之后,由浏览器立即运行性能测量工具的第一部分。当运行时,该“到达运行(execute-on-arrival)”代码修改HTML语句,该语句对每一页面进行描述,使“工具事件处理器(instrumentevent handler)”与描述该框架、网页、以及网页元素中的至少一些HTML语句相关联,在下文将参照图5A对框架、网页、以及网页元素作更详尽地描述。
网络浏览器将由一个或更多个具有网页元素的网页构成的框架集显示在客户机装置的显示器上,并响应与该网页或网页元素关联的用户或客户机装置操作系统的动作。网页和网页元素用HTML语句描述。通过内嵌提供标准行为的例行程序(routine)来提供网络浏览器响应。例如,网络浏览器通过使光标附近的网页元素高亮来响应用户光标移动,并通过发送请求到与HTML语句中的链接关联的URL来响应用户在链接上的点击。
网络浏览器允许网页提供者为与网页和网页元素关联的动作提供另外的响应。浏览器生成称为事件的数据结构,该事件用于描述与网页或网页元素关联的动作。网络浏览器将该事件作为一个参量传送到被称为事件处理器的程序中,该事件处理器列在用于定义该网页或网页元素的HTML语句中。也提供了描述该事件处理器的代码或者直接随该网页或者通过参考包含该代码的文件。如果没有对网页或网页元素要求额外的响应,那么,就没有事件处理器列在该页或元素的HTML语句中。
根据一实施例,该工具包括一个或更多工具事件处理器,随一个或更多网页或网页元素列出,以提供产生客户端性能测量的行为。
工具事件处理器包含在修改数据项的代码中,下面参看图4A、图4B、图4C、和图4D进行描述。在对工具事件处理器进行描述之后,将参照图5A和图5B,对使该工具事件处理器与网页上的元素关联的程序进行描述。
通过点击链接,或点击表格的提交按钮,用户发起一个服务请求。下文中使用提交事件来代表点击链接和点击表格的提交按钮。当用户发起服务请求时,用户开始对网络上应用程序响应时间感知。图4A为流程图,示出根据实施例包括在发送给客户机的修改数据项中的提交事件处理器400。事件处理器400与提交事件相关联;使网页元素与该事件处理器关联的程序将在下文参照图5B进行描述。这样,当网络浏览器用户观看下载的网页,移动光标到一个链接并点击它或点击表格的提交按钮时,调用一个例行程序,执行图4A中的步骤。该事件处理器的一个目的是记录用户察觉到的作出服务请求的时间。
在步骤402中,确定执行该工具事件处理器的网络浏览器的类型和版本。由于使客户机装置上的一个或更多处理器执行所描述步骤的语句在相当程度上依赖于运行语句的该网络浏览器,因此,可以确定浏览器类型。例如,用户操纵光标或装置键盘时,浏览器产生的事件的名称可在浏览器中变化。而且,如果浏览器是新的,执行该工具的代码不可能已被网络浏览器测试。在这种情况下,如果未运行该代码,则对浏览器用户来说是较安全的。
在步骤403中,确定浏览器是否是代码已被测试的浏览器。若否,则控件转到步骤410,以调用处理该点击事件的初始方法。如果到达运行(execute-on-arrival)代码使客户装置的处理器执行类似的检查,就不执行步骤402和403,如下面参照图5A所作的描述。
在步骤404中,确定当前时间。作为响应时间测量的一部分,当前时间用于定义服务请求发起的时间。
在步骤406中,将有关提交事件的性能测量结果存放在存储器或永久存储器中。例如,当前时间作为提交时间存储在Cookie中。
在步骤408中,辅助数据也被存放在数据结构中。辅助数据用于后面的分析中,以帮助诊断性能问题及对这种问题的设计解决方案。例如,浏览器类型和版本作为辅助数据存放。如上面所指出的,与关联有响应时间的浏览器类型和版本相关的辅助数据相呼应,服务提供商能够识别受限于特定浏览器及版本的数据项显示问题。再例如,客户机装置的处理器和时钟速度也作为辅助数据被存放。
在步骤410中,如果有的话,调用提交事件的初始事件处理器。当用户点击链接时,浏览器自动请求新页面,但是并非在运行与该链接关联的任何事件处理器之前。同样,当点击提交按钮时,浏览器自动发送来自表格的数据,但是并非在运行与该提交按钮关联的任何事件处理器之前。当提交事件发生时,这种提交事件处理器提供额外的功能进行执行。提交事件处理器400替换与原先由应用程序产生的初始数据项中的链接或提交按钮相关联的任何提交处理器。因此,在步骤410中,通过调用初始事件处理器,储存由应用程序为与链接或提交按钮相关联的提交事件提供的额外功能。如果该应用程序不包括链接或提交按钮的提交事件处理器,那么就不执行步骤410。然后网络浏览器执行内置步骤,如自动请求与链接关联的新页面或自动发送来自表格的数据。
当新数据项(例如新框架集)完全载入后,用户对网络上某一应用程序的响应时间的察觉结束。图4B为流程图,示出根据一实施例的包含在发送给客户机的修改数据项中的载入事件处理器420。该事件处理器420与框架集载入事件(也称为浏览器窗口载入事件)相关联。窗口水平(level)载入事件与该处理器的关联在下文参看图5A描述。在不使用窗口载入事件的实施例中,使用页面载入事件,下文参照图5B进行描述。这样,当浏览器窗口完全载入和显示在客户机装置的显示器上时,调用例行程序执行图4B的步骤。这种事件处理器的一个目的是记录用户感知到新数据项显示在客户机显示器上的时间,从而完成对响应时间的测量。在某些实施例中,这种事件处理器的另一目的是以某种方式对不满意的响应时间作出响应。
步骤422和423与图4A中的步骤402和403相应。当执行代码的浏览器未用代码检测时,步骤422和423跳过执行工具事件处理器的其它步骤。在到达运行代码表示类似检查的实施例中省略了步骤422和423,如下面参照图5A作的描述。
在步骤424中,确定框架集中的所有页面是否都已载入。在某些实施例中,每当载入页面时,都通过网络浏览器执行步骤420。如图3所示,某些数据项使网络浏览器同时显示几个页面,每个页面位于框架集的一个框架中。用户对响应时间的感知基于将页面载入到框架集的所有框架中。步骤424检查确认刚载入的页面是框架集中的最后一个页面。例如,在步骤424中,确认以前载入的页面加上当前载入的页面是否等于框架集中框架数。框架集中的框架数包含于从应用程序发送的数据项中,并且基于该到达执行代码,被客户机装置中的处理器捕获,如下面参照图5A所作的描述。以前载入的页面数保留在页面计数器中。如图4C所示,每当页面从输入缓冲器转存以让位于下一页面且浏览器发出一个转存事件时,页面计数器就会增加。
如果在步骤424中确定刚下载的页面不是框架集中的最后一个,那么控件就转到步骤436,以调用下载事件的初始方法处理器(如果有并且还没有调用的话)。在另一不使用窗口下载事件的实施例中,如果初始页面载入事件处理器在执行步骤420之前被调用,那么步骤436就能省略,如图5B所描绘的。如果步骤426被省略,或者在步骤436完成后,控件转到网络浏览器内置法,以继续监控用户对光标和键盘的操作。
如果在步骤424中确定刚刚载入的页面是框架集中的最后一页,那么控件转到步骤426,以确定当前时间。作为响应时间测量的一部分,当前时间用于定义新框架集被显示并被用户看到的时间。
在步骤428中,有关载入事件的性能测量结果存放在存储器或永久存储器中。例如,当前时间作为载入时间存放在Cookie中。再如,计算作为载入时间和提交时间之差的响应时间,并且将该响应时间存放在Cookie中。
客户端对性能测量的响应
除进行性能测量外,被增加以截取数据项的工具被配置以基于测量结果执行动作。例如,在步骤430,将测得的性能与最低性能阈值相对比。如果性能低于最低性能阈值,那么控件转到步骤432以响应降低的性能。例如,如果最低性能阈值与最大可接受响应时间相关联,那么大于该最大响应时间的响应时间与低于最低性能阈值的性能相对应。
如果控件转到步骤432,那么代码使网络浏览器响应较差性能。例如,在步骤432中,浏览器发送通知到用户组织,通知其:响应时间已超过最大可接收响应时间。在某些实施例中,通知被发送到服务提供商的系统管理员。在某些实施例中,呈现对话框给该网络浏览器的用户,通知用户:响应时间太长,并提示用户记录系统故障报告,或者获取更多资源,例如更大缓存或更大通信带宽。在一个实施例中,将一则广告,例如更快的因特网访问技术的广告呈现给用户。在某些实施例中,通知包括发送消息给网络上如服务器上执行的另一程序,以自动执行某些动作。这种自动的动作包括:将应用程序产生的数据项修改为更易传输的、更易显示的、更小更简单的数据项。在某些实施例中,Cookie中的性能测量结果在通知步骤中被发送到另一程序。
在某些实施例中省略了步骤430和432,在这些实施例中,基于返回服务器的性能测量结果,对低于阈值的性能的响应通过服务器执行而不是通过客户端执行,如下文描述。
报告性能测量结果
除进行性能测量之外,加到截取数据项的工具可被配置,以将性能测量结果报告给网络上的某一实体。该实体可以是,例如,由进行性能测量的服务提供商所控制的网络服务器或应用程序。
可采用多种技术将性能测量结果传送给服务提供商。例如,在步骤434中,向服务器发出要求不包含数据的虚拟图像文件的请求。例如,发出要求服务站点上的Dummy.gif文件的请求。该请求使网络浏览器将含有性能测量结果的cookie自动发送给服务器。由于Dummy.gif文件不包含数据,客户装置的显示器上不会增加任何东西,并且该步骤对用户是显而易见的。在另一实施例中,步骤434被省略,cookie稍迟被发送到服务器,例如当用户从服务器请求新页面时。当步骤434或等同步骤被省略后,发给服务器的性能测量结果的报告在以后的不确定时间出现,被称之为惰性报告(lazyreporting)。
然后控件转到步骤436,以调用初始窗口下载事件处理器。如果步骤436被省略,或者在步骤436完成后,控件转到网络浏览器内置法以继续监控用户的光标和键盘操作。
服务器端对性能测量的响应
在某些实施例中,考虑到服务提供商的利益,在一台连接到网络上的装置上运行的程序检测并响应低于最小允许性能阈值的性能。例如,运行于服务器装置102上的性能分析和响应程序194自动检测,并进行某些动作,以响应低于阈值的性能。服务器端的响应在下文参考图6进行描述。
转存事件处理器(THE UNLOAD EVENT HANDLER)
图4C为流程图,示出根据实施例包含于发送给客户机的修改数据项中的转存事件处理器440。根据如下文参看图5A所描述的方法,该事件处理器440与转存事件相关联。这样,当一个页面从输入缓冲器转存以让位于下一页面时,调用执行图4C中步骤的例行程序。该事件处理器的目的是计算实际已经下载的框架集的页面数。
步骤442和443与图4A中的步骤402和403相对应。当执行代码的浏览器未用代码检测时,步骤442和443跳过执行工具事件处理器的其它步骤。如果到达执行代码表示类似检查,则省略步骤442和443,如下面参照图5A作的描述。
在步骤446中,页面计数器增加。计数器可以存在于存储器中或永久存储器上。计数器被重新获得(retrieve),计数器中存放的值加1,并储存新值。如果计数器已被重置,例如当请求新框架时,那么当计数器重置时其具有无效值,如零。当计数器的值无效时,步骤446为计数器设置新值“1”。在某些实施例中,页面计数器值存储在Cookie中。
在步骤448中,调用转存事件的初始事件处理器(如果有)。在步骤448完成后,控件返回网络浏览器内置程序,以监控用户操作及产生随后事件的系统。
光标事件处理器
用户光标移动涉及到用户在呈现在客户机装置显示器上的数据项上所付出的努力。当光标在浏览器窗口移动时,交替激活经过的任何页面元素。例如,参见图3,当光标361从所示位置移动到文本区364、链接366a、链接366b、表格370、输入区372b时,这些网页元素中的每一个被依次激活,即便用户不在其上停留或点击。每次光标激活一个页面元素,网络浏览器就为该元素发出一个聚焦事件(focus event)。这些事件的数量则为光标移动的测量结果。而且,当用户改变网页元素时,例如通过选定一个网页元素并按键时,网络浏览器就为该元素发出一个改变事件。例如,当用户通过移动光标选择输入区372b并选定其时,为该区372b发出一个聚焦事件并为该输入区372b发出一个点击事件。如果用户接着敲一个键,如数字键“7”,则为该输入区372b发出一个改变事件。如果用户随后敲下数字键“321”,那么网络浏览器为输入区372b另外发出三个改变事件。对使用者在当前数据项上所付出的所有努力进行的测量,能够通过将聚焦事件和改变事件结合在一起获得。下文中,聚焦事件和改变事件共同称为光标事件。在某些实施例中,在非链接或提交按钮的网页元素上的点击也包括在光标事件中。
图4D为流程图,示出依据实施例包含在发送给客户机的修改数据项中的光标事件处理器460。事件处理器420与焦点事件和改变事件相关联,如下面参照图5B所作的描述。这样,当用户在网页元素上移动光标或改变输入区中的数值时,发出光标事件。这种事件处理器的一个目的是记录在显示页面时间与请求新页面时间之间的光标事件。
步骤462和步骤463与图4A中的步骤402和步骤403相对应。当执行代码的浏览器未用代码检测时,步骤462和463跳过执行工具事件处理器的其它步骤。如果在载入框架集或页面期间立即执行的代码的第一部分进行类似检查,则省略步骤462和463,如下面参照图5A作描述的实施例。
在步骤466中,光标移动计数器增加。计数器可以存在于存储器或永久存储器中。在该实施例中,计数器存储在cookie中。计数器被找回,存放在计数器中的值增加,并存储新值。在某些实施例中,计数器增加“1”。在其它实施例中,计数器为聚焦事件增加“1”,为改变事件增加“2”,以反映用户确定进行什么改变并找出和按下合适的键而付出的更多努力。而在其它实施例中,可以使用其它增量值。如果计数器已经复位,例如当请求新框架时,那么当其被找回时计数器具有一无效值,如零值。当计数器的值无效时,步骤466为计数器设置一个新值作为增量值,如为聚焦事件设置为“1”,而为改变事件设置为“2”。
然后控件转到步骤468,以调用初始光标事件处理器(如果有的话)。在步骤468完成后,控件转到网络浏览器内置法以继续监控用户对光标和按键的操作。
到达执行代码
图4A、图4B、图4C、图4D示出了包含在性能测量代码中的事件处理器。响应网络浏览器的一些动作执行这些步骤,并且在页面载入之前不执行。图5A示出了在浏览器发出正在被下载的框架集首页载入事件之后,当浏览器遇到数据项中的代码时立即执行的步骤。在一个实施例中,在图2的步骤208中,代码嵌入初始数据项的HTML语句末尾,因此,在初始数据项之后网络浏览器遇到该代码。在另一实施例中,在图2的步骤208中,代码嵌入初始数据项中的语句之间的HTML语句,如在报头标签中,因此,在初始数据项的某些语句之前就被浏览器遇到。
图5A为流程图的第一部分,根据图1中描述的预定义性能测量代码108,示出了包含在发送给客户机的修改数据项中的性能测量代码108’的实施例。性能测量代码108’包括在图4A、图4B、图4C、图4D中描述的工具事件处理器的代码,并将那些工具事件处理器与初始数据项中的网页元素相关联。
步骤502和504与图4A中的步骤402和403相对应。当执行代码的浏览器未用代码检测时,步骤502和504跳过执行性能测量代码的其它步骤。当浏览器未用代码108’检测时,控件转到步骤590,结束该程序。在包含步骤502和504的实施例中,该事件处理器中的相应步骤可以省略。例如在包含步骤502和503的实施例中,步骤402、403、422、423、442、443、462、和463可以省略。
在步骤506,确定通过工具事件处理器中的一个写入的应用程序的工具cookie是否已经存在于客户装置上。若否,那么正下载的框架集是应用程序的第一个框架集。由于响应时间测量需要储存的提交时间,不能获得第一框架集的响应时间,除非执行第一框架集的某些特定进程。如果在步骤506中确定不存在用于应用程序的工具cookie,那么应用程序的第一框架集正被下载,并且控件转到步骤508以执行特定进程,以捕获第一框架集的响应时间。否则,控件转到步骤510。在某些实施例中,不包括检测框架集的步骤。在这些实施例中,省略了步骤506,控件无条件转到步骤510,以检测浏览器。通过步骤508表示的该专用进程在随后的部分作更详尽地描述。
在步骤510中,获得与包含在初始数据项中的网页元素相关联的初始事件处理器。将事件处理器与网页元素关联起来有时是指将事件处理器与网页元素注册在一起(register with)。在某些实施例中,初始事件处理器可从网络浏览器请求,或者直接从初始数据项中读取。对一些浏览器来说,事件处理器名用事件和网页元素来规定。例如,如果初始事件处理器为与浏览器窗口相关联的载入事件而设置,那么该初始事件处理器被命名用于浏览器的“装载窗口(window.onLoad)”(不同的浏览器可以称该事件处理器为其它名称,如“装载框架(frameset.onload)等”。)。为说明该方法,提供了一初始数据项实例,其产生图3所描绘的框架,并且其包含称为载入事件(包含框架集)的装载窗口和提交事件的提交表格A的事件处理器,该提交事件包含框架集的第一框架页面上的表格370。在本实施例中没有提供其它初始事件处理器。根据初始数据项,通过浏览器以与每个链接关联的URL地址请求页面,完全由浏览器处理在链接366上的任何点击。
在步骤512中,窗口和页面水平事件的初始事件处理器由工具事件处理器保存和更换,且该工具事件处理器用适当的窗口和页面水平元素来注册。例如,初始事件处理器“装载窗口(window.onLoad)”用图4B所示的工具事件处理器420替换。如果在图4B中描绘的该事件处理器被称为“F4B_handler”,则用下面形式的Java描述语言语句完成该注册的替换:
orig_window_load=window.onLoad;
window.onLoad=F4B_handler;
在步骤436中工具处理器420使用名称“orig_window_load”。叫法的形式随不同的浏览器而不同,所以执行步骤436的Java描述语言语句形式为:
if(browserT=“IE”)orig_window_load( );
if(browserT=“NETSCAPE”)orig_window_load(e);
其中“browserT”是指示检测到的活动浏览器类型的变量,例如,在步骤502中,此处的IE是指INTERNET EXPLORER浏览器,NETSCAPE是指NETSCAPE浏览器,e是通过网络浏览器转到window.onLoad处理器上的事件对象。
由于在本数据项实例的页面和窗口水平上没有其它初始事件处理器,所以在步骤512中不进行其它注册替换。然而,页面水平上的工具事件处理器与该页面注册在一起。在实施例中,使用了在图4C中描绘的页面转存事件的工具事件处理器440。在实施例中,使用了在图5B中描绘的页面载入事件的工具事件处理器520。如果在图5B中描绘的页面载入事件的工具事件处理器520命名为“F5B_handler”,页面转存事件的工具事件处理器命名为“F4C_handler”,则完成一个实施例注册的Java描述语言语句形式为:
frame1.page.onLoad=F5B_handler;
frame1.page.onUnload=F4C_handler;
frame2.page.onLoad=F5B handler;
frame2.page.onUnload=F4C_handler;
frame3.page.onLoad=F5B_handler;
frame3.page.onUnload=F4C_handler;
frame4.page.onLoad=F5B_handler;
frame4.page.onUnload=F4C_handler;
在步骤514中,根据初始数据项中的信息确定和保存框架集中的框架数,用于图4B示出的载入事件处理器420中的步骤424。存储器中的参数响应存放在cookie中的参数,代码还会使客户机装置复位到无效值。例如,表示提交时间、载入时间以及光标移动量的参数被复位到零。
接着,这部分代码被完成。随后,当前框架集的首页完成载入。当首页完成载入时,网络浏览器为框架1发出页面载入事件。为框架1的页面载入事件注册图5B中的工具事件处理器,从而事件处理器被调用。这样控件转到图5B示出的步骤520。
图5B是流程图的第二部分,示出依据实施例包含在发送给客户机的修改数据项中的性能测量代码108’。该代码包括页面载入事件处理器520的实施例,页面载入事件处理器520包括图4B所示的窗口载入事件处理器420的实施例。该实施例用于不使用窗口载入事件的场合。在使用窗口载入事件的实施例中,控件转到网络浏览器内置方法,而不是转到图5B所示的步骤420。
在步骤522中,确定是否有页面载入事件的初始事件处理器。若是,控件转到步骤524,以调用页面载入事件的初始处理器。这样做是由于有些应用程序嵌入在页面事件处理器中动态产生的一个或更多网页元素。例如那些处理器可以触发(cause)加到该页面上的一个或更多链接。通过调用初始页面载入事件处理器,通过该应用程序提供的所有网页元素都位于该页面上,直到控件转到步骤526。在数据项实例中,没有初始页面载入事件处理器,控件从步骤522直接转到步骤526。
在步骤526中,代码使网络浏览器检查页面上的每个链接并嵌入工具处理器400,替换任何初始点击事件处理器。在该数据项实例中具有五个链接366,且没有点击事件的初始事件处理器。如果链接366a、366b、366c、366d、366e分别标识为LinkA、LinkB、LinkC、LinkD、LinkE,并且工具事件处理器400命名为“F4A_handler”,完成注册的Java描述语言语句形式为:
LinkA.onClick=F4A_handler;
LinkB.onClick=F4A_handler;
LinkC.onClick=F4A_handler;
LinkD.onClick=F4A_handler;
LinkF.onClick=F4A_handler;
在步骤528中,代码使网络浏览器检查页面上的每个表格并嵌入工具处理器400,替换任何初始提交事件处理器。在数据项实例中有一个表格,且其具有称为“FormA.onSubmit”的提交事件的初始事件处理器。完成注册替换的Java描述语言语句形式为:
orig_form_submit=frame1.FormA.onSubmit;
frame1.FormA.onSubmit=F4A_handler;
名称“orig_form_submit”用在由事件处理器的步骤410中的工具处理器进行的调用中。由于调用的形式随不同的浏览器而不同,所以执行步骤410的Java描述语言语句的形式为:
if(browserT=“IE”)orig_form_submit( );
if(browserT=“NETSCAPE”)orig_firm_submit(e);
在步骤530中,代码使网络浏览器检查页面上的每一元素,并嵌入工具处理器460,替换任何原始聚焦和改变事件处理器。如前所述,处理器460使光标移动计数器增加。在数据项实例中,在第一框架的页面上具有至少10个页面元素、文本框364、五个链接366、表格370及其元素、两个输入区372、以及提交按钮374,但是没有焦点和改变事件的初始事件处理器。如果工具事件处理器460命名为“F4D_handler”,则完成注册的Java描述语言语句形式为:
ElementA.onFocus=F4D_handler;
ElementA.onChange=F4D_handler;
其中十个页面元素中的每一个依次替换执行的“ElementA”的元素。
在某些实施例中,控件转到图4B描绘的步骤420,以继续载入事件处理器的步骤,如图5B中所示。这样一种实施例对无需在不同框架中的一个或更多页面窗口载入事件和单独页面的载入事件之间进行区别的浏览器是有用的。
当框架集的不同框架中的所有页面都已被载入时,控件最后转到步骤428,以将响应时间、或发送和载入时间、或者这二者存储在Cookie中。以这种方式,控件多次转到图4D中描绘的光标移动事件处理器460,其将光标移动计数存储在Cookie中。最后,具有提供一个或更多页面的每一框架集的响应时间和光标移动的测量结果的Cookie被送回服务器。
创建工具代码
在某些实施例中,应用程序开发人员人工将测量客户端性能的工具代码嵌入数据项中。然而,在示出的实施例中,如果满足修改条件,包含在修改数据项107中的代码就自动嵌入由应用程序104产生的数据项105中。
嵌入工具程序106的一个优点是不依赖于应用程序开发人员并显而易见地自动执行希望的工具,如在所示出的实施例中所述的。一个好处是不需要额外努力就可以将代码嵌入所有数据项中,这些数据项由服务提供商控制的所有服务器上的所有应用程序产生,这些应用程序包括代码108产生之前已经产生并正在运行的那些应用程序。
另一个好处是自动嵌入为测量所有应用程序的性能提供了一致的程序。如果每一应用程序的开发人员实现单独的性能测量程序,如响应时间,那么测量就不必从一个应用程序到另一个应用程序进行对比。
工具可选对象(INSTRUMENTATION ALTERNATIVES)
在上面描述的实施例中,工具代码是嵌入到所选择的发送给网络浏览器的HTML页面中的JAVASCRIPTTM(下文中JAVASCRIPTTM被称为Java描述语言)。Java描述语言是通过显示HTML页面的网络浏览器进行解释的脚本语言。
虽然上面描述了使用上述Java描述语言的实施例,但其它实施例也可以包括以其它语言表述的工具,使客户装置进行性能测量,并基于测量结果进行动作。例如,代码可以包括另一种通过浏览器进行解释的脚本语言。例如VisualBasic描述语言(VBScript)。另外,该代码还可以包括由独立于客户程序运行但从客户机程序发起的程序执行的工具,例如从NETSCAPETM NAVIGATORTM网络浏览器上发起的插件应用程序,从MICROSOFTTM INTERNETEXPLORERTM网络浏览器上发起的ACTIVEXTM应用程序,以及从上述两种及其它浏览器上发起的JAVATM applet程序。
举例来说,代码可以包括JAVATM(下文称为Java)。很多客户端程序,如网络浏览器等,被配备以接收applet程序中的Java代码。Applet中的Java语句通过称为Java虚拟机(JVM)的程序进行解释。对接收Java applet作出响应,客户机程序载入JVM(如果还没载入),并使用JVM执行Java applet中的语句。尽管比Java描述语言更强大,但以Java写成的代码趋向于更大,消耗客户端更多的传输资源。而且,载入JVM来执行Java applet趋向于消耗相当多的客户端内存及处理器资源。因此,使用Java代码测量客户端性能的实施例比使用Java描述语言的实施例会更显著地降低客户机端性能。
所示实施例中的Java描述语言在客户机上执行时,为任何客户机和任何应用程序的所有HTML数据项提供“点击到眼球”响应时间以及光标移动总量,而不需要应用程序开发人员的参与,不需要客户端用户执行人工步骤,也不需要在客户机装置上永久安装有任何软件。
用于首页的响应时间工具
除非对首页给出专门处理(special handling),否则显示首页的响应时间不在Cookie中存储。将从提交事件到框架集载入事件的时间计算为响应时间。但是请求第一框架集的页面没有提出,所以不储存该提交时间。该页面甚至不为该应用程序创建cookie。在某些情况下,例如对于具有很多页面且页面只有简易第一框架集的应用程序的情况,这种条件是允许的。服务提供商对随后的页面和框架集有比对首页更大的兴趣。然而,在其它情况下,服务提供商对首页响应时间还是非常关心的。例如,对服务提供商来说首页也许是最重要的页面。而且有时首页是用户决定是否继续留在该站点的关键。另外,站点上页面的统计取样也受益于这种独立页面的响应时间。下面描述的几种实施例提供了首页或独立页面的响应时间。
在一个实施例中,服务提供商希望指定页面,假定为“home.jsp”,是客户机程序请求的首页。服务提供商重命名该首页并产生一具有原名的替换调整虚拟页面。虚拟页面产生一提交事件,记录提交时间,接着请求该重命名的首页。例如首页重命名为“home1.jsp”,并且产生一个具有原名“home.jsp”的新页面,其自动发出一个提交事件并请求页面“home1.jsp”。客户机程序的用户象以前一样请求名为home.jsp的页面,但现在自动收到页面home1.jsp。该实施例对“home1.jsp”的请求提交该虚拟页面,从而提供了显示“home1.jsp”的响应时间。然而,如果服务提供商不能预知客户机程序请求的首页,本实施例就没有用。
在第二实施例中,每次收到来自客户机程序的第一请求,就动态产生该替换调整虚拟页。第一请求是基于客户机装置上的应用程序缺少Cookie推知的。该实施例在图5A中描述。如上所述,在步骤506中,在页面完成之前通过网络浏览器立即执行的代码确定是否有用于应用程序的cookie存在。如否,那么正在下载的页面是浏览器请求的首页,且控件转到步骤508。在步骤508中,该代码使网络浏览器建立一个包括页面载入事件处理器的虚拟页,该虚拟页调用用于到初始页的链接的链接事件处理器的点击。控件然后转到图4A中示出的步骤400,以创建cookie,记录提交时间并请求该页面。例如,如果当页面浏览器在步骤506中确定没有cookie时,应用程序的页面P1正在被下载,那么网络浏览器建立一个虚拟页面。该虚拟页没有元素,但包括一载入事件处理器,其设置到页面P1的链接并调用链接事件处理器400上的点击。将提交时间记录到事件处理器中的cookie中后,网络浏览器继续链接处理(processing)并请求页面P1。这次,当提出的页面P1返回时,包含的代码使网络浏览器在步骤506中检测cookie,并继续步骤510及以下步骤。
在另一实施例中,确定一个独立页面的响应时间,例如被选作统计样本的页面。在本实施例中,提供了两个具有预定的Java描述语言代码的文件。当第一文件在图2所示的步骤204和206中确定要提取统计样本的时其被嵌入初始数据项中。第一文件包括代码,使网络浏览器捕获提交时间并创建具有提交时间和指示要提供(instrument)的下一页面的数据的特定cookie。在随页面请求接收该特定cookie时第二文件嵌入初始数据项中。第二文件包括代码,使网络浏览器捕获并记录载入时间、报告结果、并删除该特定cookie。在本实施例中,步骤204包括确定特定cookie是否存在,步骤206包括查找如果特定cookie存在满足的条件。步骤208包括:如果特定cookie存在,则嵌入第二文件替换第一文件。
操作实例
表1通过对客户机装置在一系列时间下的状态进行描述,说明本方法的操作。表1中,通过呈现在显示器上的页面(“页面”栏)描述的每一时间(“时间”栏)的客户机状态,页面是否提交了嵌入代码(“提交?”栏),网络浏览器事件此时是否发出(“事件”栏),是否存在通过性能测量工具代码创建的cookie(“工具cookie”栏)以及存放在cookie中的提交时间值、载入时间值、光标移动计数值(分别是“提交时间”、“载入时间”、及“光标计数”栏)。
表1 客户端装置随时间的状态
  时间   页面 提交?   事件   工具cookie   提交时间   载入时间   光标计数
  t0   用户首页 No   none   NA   NA   NA   NA
  t1   用户首页 No   点击到S1的链接   NA   NA   NA   NA
  t2   Dummy Yes   载入Dummy   NA   NA   NA   NA
  t3   Dummy Yes   点击到S1的链接   Yes   t3   0   0
  t4   S1 Yes   None(载入)   Yes   t3   0   0
  t5   S1.F1 Yes   载入S1.F1   Yes   t3   0   0
  t6   S1.F1 Yes   转存S1.F1   Yes   t3   0   0
  t7   S1.F1,F2 Yes   载入窗口   Yes   t3   t7   0
  t8   S1.F1,F2 Yes   点击Dummy GIF   Yes   t3   t7   0
  t9   S1.F1,F2 Yes   聚焦*10+改变*7   Yes   0   0   17
  t10   S1.F1,F2 Yes   点击到S2链接   Yes   t10   0   17
  t11   S2 Yes   载入S2   Yes   t10   t11   17
  t12   S2 Yes   点击Dummy GIF   Yes   t10   t11   17
在本实例中,提供性能测量工具的服务器包括一个应用程序,产生具有框架F1和F2的第一框架集S1,以及由单个页面组成的第二框架集S2。框架F1中的页面与图3中描述的第一框架中的页面相同。
在时间t0,网络浏览器将用户主页呈现在客户装置的显示器上。该页面未被提交且该网络浏览器未被配置来测量客户端性能。该用户仍未动作,且存在仍未产生的工具cookie。因此,没有提交时间值、载入时间值、或鼠标移动计数值。
在时间t1,用户从该应用程序请求一项服务。该请求可以用本领域中的任何公知方式发起。例如,用户可以在浏览器的地址栏键入该应用程序的URL,或者,用户可以点击基于该应用程序的某一在前使用而作为书签存储在浏览器中的链接,或者,用户可以点击用户主页上的链接。在任何情况下,网络浏览器都发出一个等同于点击提供框架S1的应用程序的链接的事件。由于用户主页未提交,网络浏览器不能创建Cookie或存储提交时间。对应用程序的请求发送给服务器。
响应该请求,该应用程序产生用于框架集S1的数据项,并且服务器通过嵌入前述预定的Java描述语言,相对于在图5A中示出的载入过程中执行的指令和在图5B、图4A、图4B、图4C、和图4D中示出的工具事件处理器,修改该数据项。当载入该修改数据项时,网络浏览器开始运行该代码,以执行图5A中示出的步骤。在步骤506中,网络浏览器确定该工具cookie仍然不存在,从而控件转到步骤508。步骤508代表的代码使网络浏览器建立一个虚拟页面,此处命名为“Dummy”,具有在到应用程序的链接上点击的页面载入事件处理器和图4A的用于点击链接事件的工具事件处理器400。
在时间t2,空白虚拟页载入并呈现在客户机装置的显示器上。网络浏览器发出页面载入事件。没有已创建的工具cookie,也没有已设定的提交时间值、载入时间值、或光标计数值。
响应载入页面事件,在时间t3(可能在时间t2后数微秒),网络浏览器发出对链接事件的点击并执行工作事件处理器400,以在链接上点击。如图4A所示,该工具事件处理器400在步骤404确定当前时间t3,并且在步骤406将时间存入cookie中作为提交时间。载入时间值和光标计数值,包括无效值零,在步骤406中也存入cookie中。表1示出在时间t3,现在存在将t3值作为提交时间的cookie。在步骤408中辅助数据存入cookie中,例如在客户机装置上运行的网络浏览器的类型和版本。在该实例中,对于点击链接时间不存在初始事件处理器,从而步骤410不执行任何动作。然后控件回到网络浏览器方法,以从服务器上的应用程序请求服务。随着请求,通过网络浏览器将Cookie自动发送给服务器。
响应该请求,该应用程序再次产生用于框架S1的数据项,并且服务器通过嵌入预定的Java描述语言,再次修改该数据项。在载入修改数据项期间,在表1中的时间t4,网络浏览器再次开始运行代码以执行图5A示出的步骤。在步骤506,网络浏览器确定现在存在工具cookie,所以控件转到步骤510直到步骤514。步骤510和512所代表的代码使网络服务器查找窗口和页面水平事件的任何初始事件处理器,并用窗口和页面水平事件的工具事件处理器进行替换。在该例中,不存在这种事件的初始事件处理器。windows.onLoad事件处理器设置为图4B中示出的工具处理器420,页面上载事件处理器设置为图5B中示出的工具处理器520,页面转存事件处理器设置为图4C中示出的工具处理器440。在步骤514,保存框架集中的页面数。依据实例框架集S1的信息,在框架集中有两个页面,所以储存值2,其名称可变,例如,Npages,作为框架集中的页面数。其它用于创建和更新cookie的参数被设定为无效值。例如,页面计数器、光标移动计数器、提交时间、以及载入时间被设定为零。不过,此时cookie并不更新。
在时间t5,载入框架集S1的第一框架中的页面F1,用表1的“页面”栏中的S1.F1表示。网络浏览器发出页面S1.F1的页面载入事件,并且执行图5B中示出的页面载入事件的工具事件处理器520。在步骤522中,确定不存在初始页面事件处理器,并且控件转到步骤526、528和530,以登记页面上不同网页元素的点击链接、提交、聚焦、和变化事件的事件处理器(如上面对图3中第一框架中描绘的页面的说明)。在该例中,网络浏览器能够发出窗口水平载入事件,所以控件不转到步骤420,直到通过浏览器发出窗口载入事件。代之以控件转到网络浏览器的插件程序。此时,不改变cookie。
如果网络浏览器不发出窗口水平载入事件,那么控件转到步骤420,其在步骤424中确定框架集中的所有页面都未载入,然后控件转到网络浏览器的插件程序。
在时间t6,网络浏览器发出页面S1.F1的转存事件,并调用图4C中示出的页面载入事件的工具处理器440。在步骤446中,页面计数器增加。由于页面计数器当首次调用时具有一无效值,故将页面计数器的值设定为1。不改变cookie。
在时间t7,载入框架集S1的第二框架中的页面F2,以表1的“页面”栏中的S1.F1、F2表示。网络浏览器发出页面S1.F2的页面载入事件,并且执行图5B中示出的页面载入事件的工具事件处理器520。在步骤522,确定没有初始页面事件处理器,并且控件转到步骤526、528、和530,以登记页面上不同网页元素的点击链接、提交、聚焦、和变化事件的事件处理器。在该例中,网络浏览器还发出窗口水平载入事件,所以控件不转到步骤420。如果网络浏览器不发出窗口水平载入事件,那么控件从页面载入事件处理器520内转到步骤420。
在步骤424,确定由于页面计数器(其不包含当前页),为当前页加1,等于框架集中的页面数,该框架集的所有页面都被下载,存入变量Npages中。在步骤426中,确定当前时间为t7。在步骤428中,cookie作为载入时间随t7更新。表1显示,cookie包含时间t7时的提交时间t3、载入时间t7、和光标计数0。在某些实施例中,还将t7-t3的差储存为响应时间。在本例中,不包含步骤430和432,且控件直接转到步骤434。
在时间t8,在步骤434中,产生一个对名为Dummy.gif的图像文件的请求并发送给服务器。网络浏览器自动包含具有该请求的cookie,所以,在时间t8时的提交时间值、载入时间值、和光标计数值被发送到服务器并存入服务器的cookie日志中。Dummy.gif文件不包含数据,所以在显示器装置上显示不出变化。然后cookie中的值复位到零。在具有惰性报告的实施例中,步骤434省略,当浏览器再次从服务器上的应用程序请求页面时,报告cookie。
在本例中没有载入窗口事件初始事件处理器,所以步骤436不执行动作,并且控件转到网络浏览器插件法。然后,网络浏览器监控用户对框架集中网页元素的操作。在本例中,用户在第一框架中页面的每一元素上移动光标,该页面与图3中第一框架中描述的页面相似。当用户在每个页面元素上移动光标时,网络浏览器发出一聚焦事件并调用图4D中示出的光标事件的工具处理器460,其在步骤466中使cookie中存放的光标移动计数器递增。用户还在输入区372a中输入三个字符的数据,在输入区372b中输入四个字符的数据。当用户输入每个字符时,网络浏览器发出一改变事件,并调用图4D中示出的光标事件的工具处理器460,其在步骤466中使cookie中存放的光标移动计数器增加。在本例中,每一改变进行与每一聚焦同样的处理,并记录增量1。
在时间t9,发生十个聚焦事件和七个改变事件,如“事件”栏所指出的,产生17个光标移动。Cookie包含在步骤434置入的提交时间和载入时间的无效值(0,0),以及光标计数值17。在跳过步骤434的具有惰性报告的实施例中,cookie分别包含提交时间值t3、载入时间值t7、以及光标计数值17。
在时间t10,用户点击图3中示出的、第一框架集S1的第一框架中的页面F1上的“NEXT”按钮366e。网络浏览器发出一链接点击事件,并调用图4A示出的点击链接事件的工具处理器400。如图4A所示,该工具处理器400在步骤404中确定当前时间t10,并且,在步骤406中将该时间作为提交时间存入cookie中。载入时间值和光标计数值分别为0和17,也存入cookie中,如表1所示。在步骤408中,如果有辅助数据,也存入cookie中。在某些实施例中存入cookie中的实例辅助信息包括如用户身份等的注册信息、以及从一个对话到另一对话一直具有的加密口令。在某些实施例中,辅助信息包括表明事务类型的信息,如改变定单、退款、以及资金从一个帐户转移到另一帐户。在某些实施例中,辅助信息如果已经在cookie中,就不再储存。在具有惰性报告的实施例中,cookie中的值为t3、t7、和17,其一直未报告给服务器,所以,老的提交时间t3被移到一个单独变量,并且在新的提交时间t10存入之前存放在cookie中。
在该例中,没有点击链接事件的初始事件处理器,所以步骤410不执行动作。然后控件回到网络浏览器法,以从服务器上的应用程序请求下一个框架集。通过网络服务器随请求自动将Cookie发送给服务器。Cookie包含新的提交时间及前一页面的光标计数。在具有惰性报告的实施例中,随请求发送的cookie包含提交时间、载入时间、和前一页面的光标计数、以及当前页的提交时间,分别为t3、t7、17、和t10。
响应该请求,应用程序产生用于框架集S2的数据项,并且服务器通过嵌入预定的Java描述语言,再次修改数据项。在载入修改数据项期间,浏览器开始运行代码以执行图5A中示出的步骤。在步骤506中,网络浏览器确定工具cookie存在,所以控件转到步骤510直到步骤514。步骤510和512代表的代码使网络浏览器查找任何窗口和页面水平事件的初始事件处理器,并用窗口和页面水平事件的工具事件处理器替换。在该例中,没有这种事件的初始事件处理器。Windows.onLoad事件处理器被设定为图4B示出的工具处理器420;Page.onLoad事件处理器被设定为图5B中示出的工具处理器520;Page.onUnload事件处理器则被设定为图4C中示出的工具处理器440。在步骤514中,保存框架集中的页面数。根据实例框架集S2中的信息,在框架集中有一个页面,所以数值1被存入变量Npages中。其它用于创建和更新cookie的参数被设定为无效值。例如,页面计数器、光标移动计数器、提交时间、以及载入时间被设定为零,但不更新cookie。
在时间t11,载入第二框架集S2中仅有的一页,用表1的“页面”栏中的S2表示。网络浏览器发出页面S2的页面载入事件,并且执行图5B中示出的页面载入事件的工具处理器520。在步骤522中,确定没有初始页面事件处理器,并且控件转到步骤526、528、和530,以登记对页面上各种网页元素的点击链接、提交、聚焦、和改变事件的事件处理器。在该例中,网络浏览器还发出一个窗口水平载入事件,所以控件转到步骤420。
在步骤424中,确定由于页面计数器(其不包括当前页)等于1,为当前页加1,框架集中的页面数存入变量Npages中,框架集的所有页面都被下载。在步骤426中,确定当前时间为t11。在步骤428中,cookie作为载入时间随t11更新。表1显示,该cookie包含提交时间t10、载入时间t11、和在时间t11时的光标计数17。在某些实施例中,光标计数也被更新,将cookie中的值复位到零。在某些实施例中,还将t7-t3的差储存为响应时间。在本例中,不包括步骤430和432,且控件直接转到步骤434。
在时间t12,步骤434从服务器请求名为Dummy.gif的图像文件。网络浏览器自动包含具有该请求的cookie,所以在时间t12时的提交时间值、载入时间值、和光标计数值被发送到服务器并存入服务器的cookie日志中。Dummy.gif文件不包含数据,所以在显示器装置上显示不出变化。然后cookie中的值复位到零。在具有惰性报告的实施例中,步骤434省略,当浏览器再次从服务器上的应用程序请求页面时,报告cookie。
因此,通过服务器实例嵌入由服务器上的应用程序产生的HTML框架集内的Java描述语言代码形成修改数据项,当被客户装置上的浏览器下载时,使网络浏览器记录表明响应时间和光标移动的客户端性能测量结果并将这些测量结果报告给服务器。
服务器端对客户机端性能的响应实例
在某些实施例中,考虑到服务提供商的利益,需要在连接到网络的装置上运行的程序对性能进行响应。例如,在服务器装置102上运行的性能分析和响应程序194自动检测出低于最低允许性能阈值的性能,然后响应低于该阈值的性能执行某些动作。
在某些实施例中,该自动动作包括基于性能测量结果发送通知。通知包括发送页面给或打电话给服务提供商的系统管理员,告诉其:特定用户或用户组织性能已经降低。在某些实施例中,该通知包括发送消息给在网络上(如在服务器装置上)运行的另一程序,以自动执行某些动作。
在某些实施例中,该自动动作包括确定用户察觉到的响应时间与服务器端在收到请求和发送数据项作为响应之间花费的时间的差值。如果该差值很小,性能问题就确定(isolate)在服务器端。如果该差值很大,问题就确定在客户端和网络端。
在某些实施例中,该自动动作包括将应用程序产生的数据项修改得更小或更简单,以使数据项可以更容易地传输和显示。当问题已经确定在服务器端时修改产生的数据项特别有用。
在某些实施例中,响应时间与浏览器类型和版本或操作系统类型和版本或同时与这二者有关联,从而确定是否可以检测到表示某些浏览器版本体验比其它浏览器版本体验变差很多的趋势。网络服务器从设置有网络服务请求的用户代理区记录浏览器和操作系统类型和版本。在某些实施例中,执行关联,以检测客户装置部件的趋势。当问题被确定在客户端时,关联响应时间与浏览器或客户机装置部件或二者特别有用。
图6为流程图,示出了根据一实施例的性能分析和响应方法600的实例,用来对报告给服务器的客户端性能测量结果进行操作。在某些实施例中,该方法600在服务器上运行。在另外的实施例中,该方法600在通过网络连接到该服务器的另一装置上运行。
在步骤602中,分析服务器上自动形成的cookie日志,以获得性能测量结果和用于分析的辅助数据。在步骤604中,性能信息基于测量结果和辅助数据而得到,并储存在关系数据库中。例如从提交时间和载入时间得到响应时间并将其存入与框架集、框架集的测量时间及日期、浏览器类型及版本、以及光标移动计数有关的数据库表中。可发现一起放入关系数据库中的信息分散在整个日志文件中。例如,在本例中,通过步骤434提供的立即报告,第一框架集的光标计数与第二框架集的提交时间一起记录出现在cookie日志中。
在步骤606中,确定性能是否低于某一最低性能阈值。如果性能低于该最低性能阈值,那么控件转到步骤608以响应降低的性能。例如,如果最低性能阈值与最大允许响应时间相关联,那么大于该最大响应时间的响应时间与低于该最低性能阈值的性能相对应。例如,如果最低性能阈值为90%的用户体验的响应时间小于10秒的,那么检测到85%的用户体验的响应时间小于10秒,这就符合性能低于最低性能阈值。
在步骤608中,对低于阈值的性能产生响应。例如,在步骤608,发送通知。通知包括发送页面给或打电话给服务提供商的系统管理员,告知其:特定用户或用户组织性能已经退化。在某些实施例中,该通知包括向运行在网络上(如服务器上)的其它程序发送消息,自动执行某些动作。
某些响应包括将应用程序产生的数据项修改得更小或更简单,从而数据项可以更容易地被传输和显示。某些响应包括确定用户察觉到的响应时间与服务器端在收到请求和发送响应数据项之间花费的时间的差值。如果该差值很小,性能问题就确定在服务器端。如果该差值很大,问题就确定在客户端和网络端。
在步骤610中,分析关系数据库中的数据并产生报告。例如,响应时间与浏览器类型和版本相关联,以确定是否能够检测到表示某些浏览器版本体验比其它浏览器版本体验变差很多的趋势。再例如,执行关联,以检测客户机装置的趋势。
这些技术使服务提供商能获得由真实用户体验到的实际性能的测量结果,以进行分析,如通过使性能问题与客户机程序或客户机的特定部件相关联,自动诊断性能不好的原因。
硬件概述
图7为方块图,示出了可以实施本发明的实施例的计算机系统700。计算机系统700包括用于传输信息的总线702或其它传输机构,以及与总线702相连接用于处理信息的处理器704。计算机系统700还包括连接到总线702的主存储器706,如随机存取存储器(RAM)或其它动态存储装置,用于储存信息和要由处理器704运行的指令。主存储器706还可以用于储存在处理器704执行指令的过程中的临时变量或其它中间信息。计算机系统700还包括连接到总线702的只读存储器(ROM)708或其它静态存储装置,用于储存静态信息和处理器704的指令。存储装置710,如磁盘或光盘,连接到总线702,用于存储信息和指令。
计算机系统700可以经由总线702连接到显示器712,如阴极射线管(CRT)显示器,用于向计算机用户显示信息。输入装置714,包括字母数字和其它键,连接到总线702,用于向处理器704传送信息和命令选择。另一种用户输入装置是光标控制器716,如鼠标、轨迹球、或光标方向键等,用于将方向信息和命令选择传送给处理器704,并用于控制光标在显示器702上的移动。该输入装置通常具有在两条轴上(第一轴(如X)和第二轴(如Y))的两个自由度,能使装置指定平面位置。
本发明涉及到用于实现本文所描述的技术的计算机系统700的使用。根据本发明的一个实施例,通过计算机系统700响应处理器704运行包含在主存储器706中的一个或更多系列的一个或更多指令,执行这些技术。这样的指令可以从另一计算机可读介质(如存储装置710)读入主存储器706。运行主存储器706中包含的指令序列可使处理器704执行本文描述的程序步骤。在可选实施例中,为实现本发明,硬连线电路可以用于代替软件结构或与软件结构相结合,因此,本发明的实施例不限于硬件电路和软件的任何特定结合。
本文所用的术语“计算机可读介质”是指参与提供运行指令给处理器704运行的任何介质。这种介质可以采取多种形式,包括但不限于:非易失介质、易失介质、以及传输介质。非易失介质举例来说包括,光盘或磁盘,如存储装置710。易失介质包括动态存储器,如主存储器706。传输介质包括同轴电缆、铜线、和光纤,包括组成总线702的线。传输介质还可采用声波或光波形式,如在无线电波和红外数据传输过程中产生的光波。
计算机可读介质的通常形式举例来说包括:软盘、软磁盘、硬盘、磁带、或其它任何磁性介质、CD-ROM、任何其它光学介质、穿孔卡片、纸带、任何其它具有孔图案的物理介质、只读存储器(RAM)、可编程只读存储器(PROM)、以及可擦写可编程只读存储器(EPROM)、闪存(FLASH-EPROM)、任何其它记忆芯片或记忆棒、下文所述的载波、或者其它任何计算机都可以读取的介质。
计算机可读介质的各种形式都可用来承载处理器704运行的单序或多序的一个或更多指令。例如,指令首先装到远程计算机的磁盘上。该远程计算机能将指令装到其动态存储器上,并使用调制解调器通过电话线路发送指令。计算机系统700的本地调制解调器能够接收电话线上的数据,并使用红外发射器将数据转换为红外信号。红外探测器能够接收以红外信号传送的数据,并且将该数据放到总线702上。总线702将数据传送到主存储器706,处理器704从该主存储器706取回并运行该指令。主存储器706接收的指令在通过处理器704运行前后有选择地储存在存储装置710上。
计算机系统700还包括连接到总线702上的通信接口718。通信接口718提供双向数据通信,与连接到本地网络722上的网络链接720相连接。例如,通信接口718可以是综合服务数字网络(ISDN)卡或调制解调器,以提供至相应类型的电话线路的数据通信连接。再例如,通信接口718可以是局域网(LAN)卡,以提供至兼容LAN的数据通信连接。还可采用无线链接。在任何实施方式中,通信接口718发送和接收电信号、电磁信号、或光信号,这些信号承载着代表不同类型信息的数字数据流。
网络链接720通常通过一个或更多网络,向其它数据装置提供数据通信。例如,网络720可以提供通过本地网722至主机724或至由因特网服务提供商(ISP)726操作的数据装置的连接。ISP 726反过来又通过万维分组数据通信网络,现在通常称为“因特网”728,提供数据通信服务。本地网722和因特网728都使用承载数字数据流的电信号、电磁信号、或光学信号。经过各种网络的信号、网络链接720上的信号、以及经过通信接口718的信号,承载着送到和来自计算机系统700的数字数据,是传输信息的载波的示范形式。
计算机系统700能够通过网络、网络链接720、和通信接口718发送消息和接收数据,包括程序代码。在因特网实例中,服务器730可以通过因特网728、ISP 726、本地网722、和通信接口718传送被请求的应用程序代码。
接收到的代码在被收到时通过处理器704运行,和/或存储在存储装置710中、或者其它非易失存储器中,用于随后运行。这样,计算机系统700可以得到载波形式的应用程序代码。
在前面说明中,本发明已经参照特定实施例作了描述。然而,很明显,可对其进行各种修改和改变,而不背离本发明的主要精神和范围。因此,说明书和附图仅是示范性的,并无限定意义。

Claims (63)

1.一种用于测量客户端性能的方法,所述方法包括如下步骤:
在从服务器程序到客户装置的传输过程中的数据项到达所述客户装置之前,截取所述数据项;
其中,所述服务器程序是不同于截取程序的、在服务器装置处执行的程序;
修改所述数据项,以产生修改过的数据项,其能使所述客户装置上的一个或更多处理器执行下述步骤:
测量与所述数据项相关联的服务有关的性能;以及
基于由所述测量性能的步骤产生的测量结果,执行一个或更多动作;以及
将所述修改过的数据项发送给所述客户装置。
2.根据权利要求1所述的方法,其中,相对于产生用于所述服务的所述数据项的应用程序,透明地执行所述修改数据项的步骤。
3.根据权利要求1所述的方法,其中,相对于所述客户装置的用户,透明地执行所述测量性能的步骤和根据所述测量结果执行一个或更多动作的步骤。
4.根据权利要求1所述的方法,所述基于所述测量结果执行一个或更多动作的步骤还包括发送指示所述测量结果的数据给网络上的实体的步骤。
5.根据权利要求4所述的方法,所述发送数据给实体的步骤还包括:将数据存储在数据结构中,响应于来自所述客户装置的随后的服务请求,所述数据结构自动发送给与所述服务相关联的服务器装置。
6.根据权利要求5所述的方法,其中:
所述客户装置包括网络浏览器,在所述网络浏览器处,接收所述数据项,并执行所述修改数据项;以及
所述数据结构是通过所述网络浏览器储存在所述客户装置上的cookie。
7.根据权利要求4所述的方法,其中
所述修改数据项的步骤包括:增加修改数据项给所述数据项,使所述客户装置发出请求;以及
所述发送数据给实体的步骤还包括:发送包含所述数据的请求给服务器装置。
8.根据权利要求7所述的方法,其中所述请求是用于特定文件的请求,并且响应用于所述特定文件的请求,所述客户装置不改变已经显示在所述客户装置的显示器上的页面。
9.根据权利要求4所述的方法,还包括将指示所述测量结果的数据存放在服务器装置上的日志文件中。
10.根据权利要求4所述的方法,还包括将指示所述测量结果的数据储存在所述网络上的实体的数据库中。
11.根据权利要求1所述的方法,还包括如下步骤:
所述一个或更多处理器通过网络接收表示来自所述客户装置的测量结果的数据;以及
所述一个或更多处理器基于指示测量结果的数据,执行所述一个或更多动作。
12.根据权利要求11所述的方法,所述基于所述指示测量结果的数据执行所述一个或更多动作的步骤还包括:
确定表示性能的数据是否低于一阈值;以及
如果所述表示性能的数据低于所述阈值,则发送通知消息。
13.根据权利要求1所述的方法,所述基于所述测量结果执行所述一个或更多动作的步骤还包括:
确定所述表示性能的测量结果是否低于一阈值;以及
如果所述表示性能的测量结果低于所述阈值,则发送通知消息。
14.根据权利要求13所述的方法,所述发送通知消息的步骤包括发送所述通知消息给与所述服务关联的服务器装置的管理员。
15.根据权利要求13所述的方法,所述发送通知消息的步骤包括发送通知消息给所述客户装置的用户。
16.根据权利要求1所述的方法,其中所述测量结果是在请求所述数据项的客户程序的第一网页上的数据项时的第一时间与所述修改过的数据项被完全显示在所述客户装置的显示器上的第二时间之间的客户响应时间。
17.根据权利要求1所述的方法,其中:
所述修改数据项还使所述客户装置上的一个或更多处理器执行收集辅助信息的步骤,所述辅助信息与所述客户装置的一个或更多参与从应用程序获得服务的部件相关;以及
所述基于所述测量结果执行一个或更多动作的步骤包括使所述测量结果与所述辅助信息建立联系。
18.根据权利要求1所述的方法,在所述截取数据项的步骤之后,且在所述修改数据项的步骤之前,还包括如下步骤:
确定与应用程序产生的数据项相关联的类型;以及基于所述数据项的类型确定是否执行所述修改所述数据项的步骤。
19.根据权利要求1所述的方法,在所述截取数据项的步骤之后,且在所述修改所述数据项的步骤之前,还包括如下步骤:
确定与应用程序产生的数据项相关联的唯一参照;以及
基于所述唯一参照是否与特定参照相匹配,确定是否执行所述修改数据项的步骤。
20.根据权利要求1所述的方法,在所述截取数据项的步骤之后,且在所述修改数据项的步骤之前,还包括如下步骤:
确定修改过的数据项相对于要发送给所述客户装置的数据项的百分比;以及
根据所述百分比是否低于特定百分比,确定是否执行所述修改数据项的步骤;
其中,响应于根据发送给所述客户装置的、将要被修改的全部数据项的百分比确定所述数据项将被修改,来修改所述数据项。
21.根据权利要求1所述的方法,其中:
在所述数据项被发送到所述客户装置之前,所述要发送给客户装置的数据项被储存在高速缓冲存储器中;
所述截取数据项的步骤包括访问所述高速缓冲存储器中的数据项;以及
所述发送修改数据项给客户装置的步骤包括用所述修改数据项替换所述高速缓冲存储器中的数据项。
22.根据权利要求21所述的方法,其中所述高速缓冲存储器在所述服务器装置上。
23.根据权利要求21所述的方法,其中所述高速缓冲存储器位于所述客户装置的代理服务器上。
24.根据权利要求1所述的方法,其中:
所述修改数据项包括超文本标识语言(HTML)语句;以及
所述客户装置包括网络浏览器,在所述网络浏览器处,接收所述修改数据项,并执行所述修改数据项。
25.根据权利要求24所述的方法,其中:
所述网络浏览器被设置以运行Java描述语言,以及
所述修改数据项包括Java描述语言语句。
26.根据权利要求1所述的方法,其中所述修改数据项符合脚本语言。
27.根据权利要求1所述的方法,其中所述修改数据项包含Java小程序。
28.根据权利要求1所述的方法,其中所述修改数据项包含ActiveX模块。
29.根据权利要求1所述的方法,所述修改所述数据项的步骤还包括将所述修改数据项附加到所述数据项的末尾。
30.根据权利要求1所述的方法,其中:
所述数据项包括标记语言语句;以及
所述修改所述数据项的步骤还包括在标识语言语句的特定语句处嵌入所述修改数据项。
31.根据权利要求1所述的方法,其中:
所述方法还包括在修改所述数据项之前:修改第一数据项以产生修改的第一数据项,所述修改的第一数据项包括第一指令;以及将所述第一数据项发送给所述客户装置,
所述修改数据项包括增加到第二数据项中的第二指令,以及
所述进行性能测量包括基于所述第一指令开始时间测量和基于所述第二指令结束时间测量。
32.根据权利要求31所述的方法,其中:
响应于所述客户装置的用户点击所述第一数据项中包含的控件,运行所述第一指令;以及
响应于完全载入所述第二数据项,运行所述第二指令。
33.根据权利要求1所述的方法,其中所述修改数据项包括:第一指令,当所述第一指令到达所述客户装置时执行;第二指令,在所述第一指令到达之后,响应由所述客户装置产生的数据结构,执行所述第二指令。
34.根据权利要求33所述的方法,其中所述数据结构描述所述客户装置上的事件。
35.根据权利要求34所述的方法,其中所述事件是从在所述客户装置上运行的操作系统接收到的消息。
36.根据权利要求34所述的方法,其中所述事件是用户对所述客户装置的控件的操作。
37.根据权利要求33所述的方法,其中所述第二指令使所述一个或多个处理器执行性能测量步骤。
38.根据权利要求33所述的方法,其中所述第二指令使所述一个或多个处理器记录当前时间。
39.根据权利要求1所述的方法,其中所述修改数据项包括:第一指令,为了响应描述由所述客户装置产生的第一事件的数据结构,运行所述第一指令;第二指令,为了响应描述由所述客户装置产生的第二事件的数据结构,运行所述第二指令。
40.根据权利要求1所述的方法,其中,测量与所述数据项相关联的服务有关的性能包括测量多个光标事件。
41.根据权利要求1所述的方法,其中,基于源自所述测量性能步骤的测量的所述一个或多个动作包括:
确定所测量的性能低于最小性能阈值;
响应于确定所测量的性能低于最小性能阈值,发送请求给用于所修订的数据项的截取程序或所述服务器装置;
所述客户装置接收所修订的数据项。
42.根据权利要求41所述的方法,其中所述最小性能阈值与最大可接受响应时间相关联。
43.根据权利要求41所述的方法,其中,基于源自所述测量性能步骤的测量的所述一个或多个动作包括:
在cookie中记录指示所述测量的数据;
将所述cookie发送给所述服务器装置或所述截取程序至少之一。
44.根据权利要求43所述的方法,其中,发送所述cookie给所述服务器装置或所述截取程序至少之一,而不需要在所述客户装置处的用户请求新数据项。
45.根据权利要求43所述的方法,其中,基于源自所述测量性能步骤的测量的所述一个或多个动作包括:
从所述截取程序或所述服务器装置之一请求图像文件;
其中,作为从所述截取程序或所述服务器装置之一请求图像文件的结果,发送所述cookie给所述服务器装置或所述截取程序至少之一。
46.根据权利要求45所述的方法,其中,所述图像文件是不带数据的图像文件。
47.根据权利要求45所述的方法,其中,所述修改数据项响应于检测到所述数据项是完全加载在所述客户装置处的客户程序中,来进行从所述截取程序或所述服务器装置之一请求图像文件的动作。
48.根据权利要求1所述的方法,其中,基于源自所述测量性能步骤的测量的所述一个或多个动作包括:
将所测量到的性能报告给所述服务器装置或所述截取程序至少之一,所述方法进一步包括:
使在所述客户装置处所测量的性能与一个或多个规格的服务器侧性能相关联。
49.根据权利要求1所述的方法,进一步包括:
在所述截取程序处截取传输过程中的所述数据项之前:
在原始数据项到达所述客户装置处之前,截取从所述服务器程序向所述客户装置传输过程中的所述原始数据项;
根据所述原始数据项,通过修改所述原始数据项以生成修改的原始数据项,以包括原始修改数据项,所述原始修改数据项使所述客户装置上的一个或多个处理器执行以下步骤:
记录所述客户装置请求所述数据项的时间;
发送所述经过修改的原始数据项给所述客户装置。
50.根据权利要求49所述的方法,其中,响应于在所述客户装置处的用户选择连接至所述数据项的控件,记录所述客户装置请求所述数据项的时间。
51.根据权利要求49所述的方法,其中,所述原始数据项是其中所述原始修改数据项进一步使所述客户装置上的一个或多个处理器执行以下步骤的数据项:
当加载修改后的原始数据项时:
确定所述客户装置不能储存指示用于所述原始数据项的请求时间的数据,所述请求时间是所述原始数据项被请求的时间;
响应于确定所述客户装置不储存指示用于所述原始数据项的请求时间的数据,构建将在所述客户装置处加载的、替代所更改后的原始数据项的页面,所述页面与所更改的原始数据项不同,其中,所述页面使所述客户装置上的一个或多个处理器执行以下步骤:
从所述服务器装置或所述截取程序自动获取所述数据项;
记录表示所述数据项被请求的时间。
52.根据权利要求49所述的方法,其中,所述原始数据项是所述数据项,其中,所述方法进一步包括:
在所述截取过程处截取传输中的所述数据项之前:
确定所述客户装置没有储存表示用于所述原始数据项的请求时间的数据,所述请求时间是所述原始数据项被请求的时间;
其中,修改所述原始数据项包括收到来自客户机程序的请求,动态产生替换调整虚拟页,其中,修改后的原始修改数据项进一步使所述客户装置上的一个或多个处理器执行以下步骤:
从所述服务器装置或所述截取程序之一自动请求所述数据项;
记录指示所述数据项被请求的时间的数据。
53.根据权利要求49所述的方法,进一步包括:
在所述截取程序处:
确定发送给所述客户装置的、将被修改的全部数据项的百分比;以及
根据发送给所述客户装置的、将被修改的全部数据项的百分比,确定所述数据项或所述原始数据项之一将被修改;
其中,响应于根据发送给所述客户装置的、将要被修改的全部数据项的百分比确定所述数据项或所述原始数据项之一将被修改。
54.根据权利要求1所述的方法,其中:
所述数据项是框架中的修改数据项;以及
响应于确定所有框架中的其它数据项已被加载,来执行测量与所述修改数据项相关联的服务有关的性能及基于由所述测量性能的步骤产生的测量结果,执行一个或更多动作的步骤。
55.根据权利要求1所述的方法,进一步包括以下步骤:
在网络上接收指示来自所述客户装置的所述测量的数据;
确定所述数据是否指示性能问题,所述性能问题是所述性能已经下降到阈值之下;以及
如果所述数据指示性能已经下降到所述阈值之下,接着,至少根据所述数据和一个或多个规格的服务器侧性能,确定所述性能问题是否可归因于所述服务器装置,或者所述客户装置和将所述客户装置连接至所述服务器装置的网络之一。
56.一种测量客户侧性能的方法,所述方法包括以下步骤:
在服务装置处,接收来自客户装置的指示所述客户装置已经经历相对于所述客户装置所请求的数据项的差性能的数据;
响应于接收所述数据:
根据所述数据项生成修订的数据项,
其中,所述修订的数据项更小或更简单,以使数据项可以更容易地传输和显示,
其中,所述差性能由所述客户装置的用户请求所述数据项时的第一时间和所述数据项被完全呈现在所述客户装置的显示器上的第二时间之间的客户响应时间的测量结果来指示。
57.根据权利要求56所述的方法,其中,相对于所述客户装置所请求的数据项所指示的差性能的所述数据指示在所述客户装置处发生的性能的测量,所述方法进一步包括:确定所测量的性能低于最小阈值,所述测量结果由服务器确定。
58.根据权利要求57所述的方法,其中,所述性能测量结果是由于所述数据项已被完全呈现在所述客户装置的显示器上而已经发生的多个光标事件。
59.根据权利要求56所述的方法,其中,指示相对于所述客户装置所请求的所述数据项的差性能的数据是指示所述客户装置认为在所述客户装置处发生的性能测量结果将低于最小阈值的数据。
60.根据权利要求56所述的方法,其中,所修订的数据项是所述数据项的较小版本。
61.根据权利要求56所述的方法,其中,所修订的数据项是所述数据项的较简单版本。
62.根据权利要求56所述的方法,进一步包括将所修订的数据项传送给所述客户装置。
63.一种用于响应网络上客户端性能的方法,所述网络将运行客户程序的客户装置连接到被配置以运行提供服务的应用程序的服务器装置上,所述客户程序和所述应用程序通过截取程序相连接,所述方法包括如下步骤:
所述截取程序截取由所述应用程序产生的数据项;
相对于所述应用程序,所述截取程序透明地修改所述数据项,产生修改过的数据项,其能使所述客户装置上的一个或多个处理器执行下述步骤:
测量与所述应用程序提供的服务有关的性能,以及
基于由所述测量性能步骤产生的测量结果,向所述服务器装置发送指示所述测量结果的数据;
所述截取程序向所述客户程序发送所述修改数据项;
所述服务器装置接收指示所述测量结果的数据;
所述服务器装置将指示所述测量结果的数据储存在数据库中;以及
基于所述指示测量结果的数据,
所述服务器装置确定所述表示性能的数据是否低于一阈值,以及
如果所述指示性能的数据已低于所述阈值,则所述服务器装置发送通知消息。
CN02810689XA 2001-04-20 2002-04-19 服务器控制的客户端性能测量技术 Expired - Lifetime CN101194247B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US28557701P 2001-04-20 2001-04-20
US60/285,577 2001-04-20
US09/945,160 US20020184363A1 (en) 2001-04-20 2001-08-31 Techniques for server-controlled measurement of client-side performance
US09/945,160 2001-08-31
PCT/US2002/012695 WO2002086743A1 (en) 2001-04-20 2002-04-19 Techniques for server-controlled measurement of client-side performance

Publications (2)

Publication Number Publication Date
CN101194247A CN101194247A (zh) 2008-06-04
CN101194247B true CN101194247B (zh) 2010-04-28

Family

ID=26963268

Family Applications (1)

Application Number Title Priority Date Filing Date
CN02810689XA Expired - Lifetime CN101194247B (zh) 2001-04-20 2002-04-19 服务器控制的客户端性能测量技术

Country Status (6)

Country Link
US (1) US20020184363A1 (zh)
EP (1) EP1379965A4 (zh)
JP (1) JP4334232B2 (zh)
CN (1) CN101194247B (zh)
CA (1) CA2443283A1 (zh)
WO (1) WO2002086743A1 (zh)

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8156216B1 (en) 2002-01-30 2012-04-10 Adobe Systems Incorporated Distributed data collection and aggregation
US6856943B2 (en) * 2002-03-26 2005-02-15 Sun Microsystems, Inc. User perception tool
US7418702B2 (en) * 2002-08-06 2008-08-26 Sheng (Ted) Tai Tsao Concurrent web based multi-task support for control management system
US8250201B2 (en) * 2002-09-09 2012-08-21 International Business Machines Corporation Servlet monitoring tool
US7124330B2 (en) * 2002-09-27 2006-10-17 Broadcom Corporation Physical layer loop back method and apparatus
US7216164B1 (en) * 2002-10-09 2007-05-08 Cisco Technology, Inc. Methods and apparatus for determining the performance of a server
US7353538B2 (en) 2002-11-08 2008-04-01 Federal Network Systems Llc Server resource management, analysis, and intrusion negation
US7376732B2 (en) * 2002-11-08 2008-05-20 Federal Network Systems, Llc Systems and methods for preventing intrusion at a web host
US20040221034A1 (en) * 2002-12-18 2004-11-04 Kausik Balas Natarajan Centralized measurement of web performance
US20050216844A1 (en) * 2004-03-03 2005-09-29 Error Brett M Delayed transmission of website usage data
US20040243704A1 (en) * 2003-04-14 2004-12-02 Alfredo Botelho System and method for determining the unique web users and calculating the reach, frequency and effective reach of user web access
US7712083B2 (en) * 2003-08-20 2010-05-04 Igt Method and apparatus for monitoring and updating system software
US7363364B2 (en) 2004-03-30 2008-04-22 At&T Delaware Intellectual Property, Inc. Methods, systems, and products for verifying integrity of web-server served content
US7426556B2 (en) 2004-03-30 2008-09-16 At&T Intellectual Property I, L.P. Methods, systems, and products for verifying integrity of web-server served content
US7216256B2 (en) 2004-03-30 2007-05-08 Bellsouth Intellectual Property Corporation Methods, systems, and products for verifying integrity of web-server served content
JP2006279466A (ja) * 2005-03-29 2006-10-12 Fujitsu Ltd 監視システム、監視プログラム及び監視方法
US8429655B2 (en) * 2005-04-29 2013-04-23 Microsoft Corporation System and method for asynchronous processing in page lifecycle
US7698417B2 (en) * 2005-06-15 2010-04-13 Microsoft Corporation Optimized performance counter monitoring
US7636711B2 (en) 2005-06-28 2009-12-22 Microsoft Corporation Extensible workflows
US8005943B2 (en) * 2005-10-12 2011-08-23 Computer Associates Think, Inc. Performance monitoring of network applications
US20070094380A1 (en) * 2005-10-20 2007-04-26 Samuel Fu Method and apparatus for collocating application monitoring reports with web applications
GB0605578D0 (en) * 2006-03-20 2006-04-26 Speed Trap Com Ltd Content management
US20080010359A1 (en) * 2006-07-10 2008-01-10 Jeffrey Mark Achtermann Computer implemented method and system for managing server-based rendering of messages in a heterogeneous environment
CN101131747B (zh) * 2006-08-22 2012-02-01 国际商业机器公司 捕获和/或分析客户端的Web页面事件的方法、装置及系统
US8849981B2 (en) * 2006-12-01 2014-09-30 Ca, Inc. Response time benchmarking
US9349134B1 (en) * 2007-05-31 2016-05-24 Google Inc. Detecting illegitimate network traffic
JP4906672B2 (ja) * 2007-10-22 2012-03-28 株式会社日立製作所 ウェブアプリケーションの処理記録方法および処理記録装置
US7975214B2 (en) * 2007-10-26 2011-07-05 International Business Machines Corporation System for capturing frames and form data
US8914774B1 (en) 2007-11-15 2014-12-16 Appcelerator, Inc. System and method for tagging code to determine where the code runs
US8954989B1 (en) 2007-11-19 2015-02-10 Appcelerator, Inc. Flexible, event-driven JavaScript server architecture
US8260845B1 (en) 2007-11-21 2012-09-04 Appcelerator, Inc. System and method for auto-generating JavaScript proxies and meta-proxies
US8719451B1 (en) 2007-11-23 2014-05-06 Appcelerator, Inc. System and method for on-the-fly, post-processing document object model manipulation
US8566807B1 (en) 2007-11-23 2013-10-22 Appcelerator, Inc. System and method for accessibility of document object model and JavaScript by other platforms
US8849985B1 (en) * 2007-12-03 2014-09-30 Appcelerator, Inc. On-the-fly instrumentation of Web applications, Web-pages or Web-sites
US8819539B1 (en) 2007-12-03 2014-08-26 Appcelerator, Inc. On-the-fly rewriting of uniform resource locators in a web-page
US8806431B1 (en) 2007-12-03 2014-08-12 Appecelerator, Inc. Aspect oriented programming
US8756579B1 (en) 2007-12-03 2014-06-17 Appcelerator, Inc. Client-side and server-side unified validation
US8938491B1 (en) 2007-12-04 2015-01-20 Appcelerator, Inc. System and method for secure binding of client calls and server functions
US8527860B1 (en) 2007-12-04 2013-09-03 Appcelerator, Inc. System and method for exposing the dynamic web server-side
US8285813B1 (en) 2007-12-05 2012-10-09 Appcelerator, Inc. System and method for emulating different user agents on a server
US8639743B1 (en) 2007-12-05 2014-01-28 Appcelerator, Inc. System and method for on-the-fly rewriting of JavaScript
US8335982B1 (en) 2007-12-05 2012-12-18 Appcelerator, Inc. System and method for binding a document object model through JavaScript callbacks
US7953887B2 (en) * 2008-02-14 2011-05-31 International Business Machines Corporation Asynchronous automated routing of user to optimal host
US8291079B1 (en) 2008-06-04 2012-10-16 Appcelerator, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8880678B1 (en) 2008-06-05 2014-11-04 Appcelerator, Inc. System and method for managing and monitoring a web application using multiple cloud providers
US7596620B1 (en) 2008-11-04 2009-09-29 Aptana, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8893156B2 (en) * 2009-03-24 2014-11-18 Microsoft Corporation Monitoring of distributed applications
US8510469B2 (en) * 2009-08-31 2013-08-13 Cisco Technology, Inc. Measuring attributes of client-server applications
US8473959B2 (en) * 2010-02-22 2013-06-25 Virtustream, Inc. Methods and apparatus related to migration of customer resources to virtual resources within a data center environment
US9122538B2 (en) 2010-02-22 2015-09-01 Virtustream, Inc. Methods and apparatus related to management of unit-based virtual resources within a data center environment
US9027017B2 (en) * 2010-02-22 2015-05-05 Virtustream, Inc. Methods and apparatus for movement of virtual resources within a data center environment
US9058210B2 (en) * 2010-03-23 2015-06-16 Ebay Inc. Weighted request rate limiting for resources
US8938721B2 (en) * 2010-07-21 2015-01-20 Microsoft Corporation Measuring actual end user performance and availability of web applications
US9582392B2 (en) * 2010-09-14 2017-02-28 Microsoft Technology Licensing, Llc Add-on performance advisor
JP5379911B2 (ja) * 2010-09-28 2013-12-25 株式会社野村総合研究所 動作検証装置、動作検証方法および動作検証プログラム
CN102541885A (zh) * 2010-12-10 2012-07-04 中国移动通信集团浙江有限公司 一种检测数据库阻塞的方法及装置
CN102546732B (zh) * 2010-12-31 2015-03-18 北大方正集团有限公司 一种网页中的文件传输方法及系统
US8650284B2 (en) * 2011-02-28 2014-02-11 Oracle International Corporation User activity monitoring
WO2011147378A2 (zh) * 2011-06-07 2011-12-01 华为技术有限公司 一种数据处理的方法及接入节点
WO2013029051A2 (en) * 2011-08-25 2013-02-28 to fuVIRTUSTREAM, INC. Systems and methods of host-aware resource management involving cluster-based resource pools
US8751568B1 (en) * 2012-02-13 2014-06-10 Symantec Corporation Systems and methods for data loss prevention
US8706871B2 (en) * 2012-07-20 2014-04-22 Blue Kai, Inc. Tag latency monitoring and control system for enhanced web page performance
US10666533B2 (en) 2012-07-20 2020-05-26 Oracle International Corporation Tag latency monitoring and control system for enhanced web page performance
CN103581133B (zh) * 2012-07-31 2017-04-05 国际商业机器公司 Web服务器对访问请求发送响应的方法和系统
CN102905300B (zh) * 2012-09-14 2016-09-07 北京中创信测科技股份有限公司 基于网络数据的lte仿真测试流程自动生成方法
US20140136952A1 (en) * 2012-11-14 2014-05-15 Cisco Technology, Inc. Improving web sites performance using edge servers in fog computing architecture
US9503310B1 (en) * 2012-11-27 2016-11-22 Leidos, Inc. Methods and systems of dynamic management of resources in a virtualized environment
US11134116B2 (en) * 2013-03-15 2021-09-28 D2L Corporation System and method for dynamically loading a webpage
CN103365542B (zh) * 2013-07-01 2016-08-31 上海携程商务有限公司 用户点击行为展示方法及系统
US10496517B2 (en) * 2014-02-04 2019-12-03 ZeroTurnaround AS System and method for providing runtime diagnostics of executing applications
CN104021082B (zh) * 2014-06-16 2017-03-01 贝壳网际(北京)安全技术有限公司 一种针对浏览器的远程调试方法及装置
US10318615B1 (en) * 2014-06-18 2019-06-11 Amazon Technologies, Inc. Modeling and measuring browser performance using reference pages
CN104216943A (zh) * 2014-06-24 2014-12-17 用友优普信息技术有限公司 自动收集阻塞信息方便事后分析数据库阻塞的方法及装置
US10129322B2 (en) * 2014-09-29 2018-11-13 D2L Corporation Method and system for determining browser compatibility
US10169481B2 (en) * 2015-02-18 2019-01-01 Adobe Systems Incorporated Method for intelligent web reference preloading based on user behavior prediction
CN107533544B (zh) * 2015-02-24 2021-01-08 微福斯有限责任公司 元素标识符生成
US9225625B1 (en) 2015-03-26 2015-12-29 Linkedin Corporation Detecting and alerting performance degradation during features ramp-up
CN104991957B (zh) * 2015-07-21 2018-08-07 北京润通丰华科技有限公司 一种确定网页打开时间的方法及装置
US10432489B2 (en) 2015-09-03 2019-10-01 BlackLine Systems, Inc. Computing system including dynamic performance profile adaptation functionality
US20170070397A1 (en) * 2015-09-09 2017-03-09 Ca, Inc. Proactive infrastructure fault, root cause, and impact management
US10713109B2 (en) * 2017-09-29 2020-07-14 Apple Inc. Method and system for predicting failure events
JP6856876B2 (ja) * 2019-03-19 2021-04-14 富士通クライアントコンピューティング株式会社 情報処理装置及び情報処理システム
KR20220003625A (ko) * 2020-11-16 2022-01-10 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 성능 검측 방법, 장치, 전자 기기, 컴퓨터 판독 가능 매체 및 컴퓨터 프로그램 제품

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0815277B2 (ja) * 1991-08-09 1996-02-14 インターナショナル・ビジネス・マシーンズ・コーポレイション パフォーマンス測定値を得るためのシステムおよび方法
US5481735A (en) * 1992-12-28 1996-01-02 Apple Computer, Inc. Method for modifying packets that meet a particular criteria as the packets pass between two layers in a network
JP3366475B2 (ja) * 1994-04-12 2003-01-14 三菱電機株式会社 データ処理速度の評価方法
US5781449A (en) * 1995-08-10 1998-07-14 Advanced System Technologies, Inc. Response time measurement apparatus and method
US5754774A (en) * 1996-02-15 1998-05-19 International Business Machine Corp. Client/server communication system
US5793976A (en) * 1996-04-01 1998-08-11 Gte Laboratories Incorporated Method and apparatus for performance monitoring in electronic communications networks
US6081835A (en) * 1996-04-04 2000-06-27 British Telecommunications Public Limited Company Internet server and method of controlling an internet server
US5696701A (en) * 1996-07-12 1997-12-09 Electronic Data Systems Corporation Method and system for monitoring the performance of computers in computer networks using modular extensions
US5974237A (en) * 1996-12-18 1999-10-26 Northern Telecom Limited Communications network monitoring
US6061724A (en) * 1997-01-29 2000-05-09 Infovista Sa Modelling process for an information system, in particular with a view to measuring performance and monitoring the quality of service, and a measurement and monitoring system implementing this process
US5884312A (en) * 1997-02-28 1999-03-16 Electronic Data Systems Corporation System and method for securely accessing information from disparate data sources through a network
US5872976A (en) * 1997-04-01 1999-02-16 Landmark Systems Corporation Client-based system for monitoring the performance of application programs
US6266681B1 (en) * 1997-04-08 2001-07-24 Network Commerce Inc. Method and system for inserting code to conditionally incorporate a user interface component in an HTML document
US6006260A (en) * 1997-06-03 1999-12-21 Keynote Systems, Inc. Method and apparatus for evalutating service to a user over the internet
JP2000501542A (ja) * 1997-07-01 2000-02-08 プログレス ソフトウェア コーポレイション ネットワーク・アプリケーション用のテスト及びデバッグツール
US6078956A (en) * 1997-09-08 2000-06-20 International Business Machines Corporation World wide web end user response time monitor
US5944784A (en) * 1997-09-30 1999-08-31 The United States Of America As Represented By The Secretary Of The Navy Operating methods for a universal client device permittting a computer to receive and display information from several special applications simultaneously
US6317868B1 (en) * 1997-10-24 2001-11-13 University Of Washington Process for transparently enforcing protection domains and access control as well as auditing operations in software components
US6286046B1 (en) * 1997-12-22 2001-09-04 International Business Machines Corporation Method of recording and measuring e-business sessions on the world wide web
US6438592B1 (en) * 1998-02-25 2002-08-20 Michael G. Killian Systems for monitoring and improving performance on the world wide web
US6311175B1 (en) * 1998-03-06 2001-10-30 Perot Systems Corp. System and method for generating performance models of complex information technology systems
US6209003B1 (en) * 1998-04-15 2001-03-27 Inktomi Corporation Garbage collection in an object cache
EP0952522B1 (en) 1998-04-22 2011-08-24 Nippon Telegraph And Telephone Corporation Method and device for acquiring usage data of an application
US6108662A (en) * 1998-05-08 2000-08-22 Allen-Bradley Company, Llc System method and article of manufacture for integrated enterprise-wide control
US6314463B1 (en) * 1998-05-29 2001-11-06 Webspective Software, Inc. Method and system for measuring queue length and delay
US20010037400A1 (en) * 1998-07-22 2001-11-01 Uri Raz Method and system for decreasing the user-perceived system response time in web-based systems
US6339750B1 (en) * 1998-11-19 2002-01-15 Ncr Corporation Method for setting and displaying performance thresholds using a platform independent program
JP2000172481A (ja) * 1998-12-10 2000-06-23 Canon Inc ナビゲ―ション方法及び装置並びに記憶媒体
US6157618A (en) * 1999-01-26 2000-12-05 Microsoft Corporation Distributed internet user experience monitoring system
US6427168B1 (en) * 1999-07-26 2002-07-30 Microsoft Corporation Architecture for system monitoring using high-performance providers
MXPA02007310A (es) * 2000-01-28 2003-10-14 Williams Comm Llc Sistema y metodo para reescribir una solicitud/respuesta de recursos de medios entre un servidor de origen y un cliente.
US20010037239A1 (en) * 2000-03-07 2001-11-01 Satoshi Kanatani Method for a network-based revenue model utilizing a raffle contest
US6584504B1 (en) * 2000-05-26 2003-06-24 Networks Associates Technology, Inc. Method and apparatus for monitoring internet traffic on an internet web page
US6834297B1 (en) * 2000-10-06 2004-12-21 Redline Networks, Inc. Web resource transfer acceleration system and method
US7600014B2 (en) * 2000-11-16 2009-10-06 Symantec Corporation Method and system for monitoring the performance of a distributed application
US6792459B2 (en) * 2000-12-14 2004-09-14 International Business Machines Corporation Verification of service level agreement contracts in a client server environment
US20020112049A1 (en) * 2000-12-14 2002-08-15 International Business Machines Corporation Measuring response time for a computer accessing information from a network
US7197559B2 (en) * 2001-05-09 2007-03-27 Mercury Interactive Corporation Transaction breakdown feature to facilitate analysis of end user performance of a server system
US7219145B2 (en) * 2001-05-30 2007-05-15 Qualcomm Incorporated Method and apparatus for individually estimating time required to download application programs to remote modules over wireless network

Also Published As

Publication number Publication date
US20020184363A1 (en) 2002-12-05
WO2002086743A1 (en) 2002-10-31
CN101194247A (zh) 2008-06-04
CA2443283A1 (en) 2002-10-31
JP4334232B2 (ja) 2009-09-30
JP2004537097A (ja) 2004-12-09
EP1379965A1 (en) 2004-01-14
EP1379965A4 (en) 2007-03-21

Similar Documents

Publication Publication Date Title
CN101194247B (zh) 服务器控制的客户端性能测量技术
US8775603B2 (en) Method and system for testing variations of website content
US8260820B2 (en) Method and apparatus for searching
US8725794B2 (en) Enhanced website tracking system and method
US7818506B1 (en) Method and system for cache management
US7801891B2 (en) System and method for collecting user interest data
US6857119B1 (en) Techniques for modifying a compiled application
US20060271671A1 (en) System and method for optimizing website visitor actions
AU774177B2 (en) Information collection system and information collection method on network, each using technique of internet, and recording medium in which the information collection method is recorded
US20020107698A1 (en) Apparatus, methods and computer programs for determining estimated impact of proposed legislation
US7392321B1 (en) Method and system for evaluating quality of service for transactions over a network
US20060085420A1 (en) Method and apparatus for monitoring real users experience with a website
KR20050009752A (ko) 상거래 파이프라인 분해 방법 및 시스템
CN110163654B (zh) 一种广告投放数据追踪方法和系统
CN101997903A (zh) 用于处理超文本传输协议请求的方法和系统
EP2332063A1 (en) Uniquely identifying network-distributed devices without explicitly provided device or user identifying information
US7403985B2 (en) Method and system for analyzing electronic service execution
US20070271216A1 (en) Using MD4 Checksum as Primary Keys to Link Transactions Across Machines
US6785723B1 (en) Tracking the transmission of web documents or files sent from resource locations through servers on the web to client computer stations which send tracked transmission characteristics data back to said servers
EP1419460A1 (en) Traffic flow analysis method
WO2007059451A2 (en) Method and system for dynamic insurance quotes
EP1026608A2 (en) Method and apparatus for logging web user activity using client-side support
CN105701175B (zh) 一种数据获取方法及装置
CN106095946B (zh) 页面的处理方法及装置
WO2001008046A1 (en) Server-based instrumentation system for internet-enabled applications

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term

Granted publication date: 20100428

CX01 Expiry of patent term