Page Detailer Pro 是 IBM alphaworks 提供的一个工具。它是一款用来记录浏览器 HTTP 请求的软件,它通过在客户端的 Windows 端口堆栈中插入探针(Probe)来获取记录浏览器发起的 HTTP 请求的各种类型的数据。
图 1 是一个 Page Detailer 记录的截图。浅蓝色标注部分是后加的,由上图示可知:
- 页面尺寸。这儿的页面尺寸只包含资源本身的尺寸,不包含 HTTP 头及其他协议栈的头尺寸。当然,PageDetailer 也提供总下载尺寸的数据。
- HTTP 请求数。
- 单个资源下载时间。这整个条形代表单个资源下载的总时间,包含建立网络连接的时间,发送 HTTP 请求的时间,接收 HTTP 响应的时间,网路传输整个资源的时间。
- 浏览器发出请求头到接收到响应头的时间。PageDetailer 只提供这个时间,但事实上网络监听工具可以提供记录更细粒度的时间。比如:HTTP 请求的发送时间,等待服务器响应的时间,接受 HTTP 响应头的时间。由于在局域网里,接受发送头的时间极短,所以这个时间可以认为就是服务器的响应时间。在这个图示中,把所有蓝色条形代表的时间相加就是服务 器消耗的时间,去除重叠部分后才是服务器响应时间。注意,服务器消耗的时间不等于服务器响应的时间,这里也有一个并发度的问题。
- 网络传输时间。只是有关浏览器从开始接收这个资源的内容到接受结束所化的时间。一般的来说,它就是资源尺寸 / 带宽。但如果服务器或浏览器是以流的方式处理这个资源的话,那它还包含浏览器或服务器的处理时间。
- 浏览器渲染时间。在任意两个资源下载中的间隔时间就是浏览器的渲染时间。注意:即使是在资源下载是,浏览器也可能在进行渲染。不过这些消 耗,无法用间隔时间的方法判断。一般的来说,这部分时间是比较有限的并且倾向于忽略。
- 资源下载之间没有重叠,这说明这些下载之间没有并发。
- 资源下载之间有重叠,这说明这些下载之间有并发。
那么并发度怎么计算?一个简化的方法就是:
并发度 = 单个资源下载时间之和 / (页面下载时间 – 浏览器渲染时间)
简化的前提是:
- 在局域网内,网络延迟很低。
- 服务器响应很快。
- 服务器端,浏览器端没有流式处理,或很快
当然,在这里只是介绍了一下计算并发度的原理。基于这个原理,可以编写相应的程序读取 PageDetailer 或其他网络监听程序 (比如 WireShark) 的数据来自动计算并发度。
下载地址