[Test]Dynatrace使用–图片的size为0的疑惑

十二 17th, 2011

我们在使用Dynatrace ajax做前端性能测试的时候,发现了一个非常奇怪的现象:

Image [3]

如上图所示, 对于图片资源,都处花费了一定的时间去下载,但是其图片的大小却显示为0.检查该图片,其真实大小为2549K。

开始,我做出了2个假设:

   1. 该图片被缓存到本地,消耗的0.13s是与服务器check的时候,而图片并没用从服务器取得。

   2. Dynatrace的一个bug,获取到的数据不对。

其实第一个假设很好验证,清除所有的缓存,并检查一下该图片是否存在于缓存文件夹下。执行一轮新的测试,发现得到的数据和现在的是一样的,证明缓存导致这个问题应该是不对的。

于是,我开始了对这个问题的detail数据进行了分析:

Image [2]

进入到该请求的Network信息页面,查看返回的response信息,发现transfe-Encoding是chunked,于是我就网上找了一下chunked编码是什么东西。

原理,真正的原因看下面这段解释就差不多清楚啦!

       有时候,Web服务器生成HTTP Response是无法在Header就确定消息大小的,这时一般来说服务器将不会提供Content-Length的头信息,而采用Chunked编码动态的提供body内容的长度。

进行Chunked编码传输的HTTP Response会在消息头部设置:Transfer-Encoding: chunked

表示Content Body将用Chunked编码传输内容。

Chunked编码使用若干个Chunk串连而成,由一个标明长度为0的chunk标示结束。每个Chunk分为头部和正文两部分,头部内容指定下一段正文的字符总数(十六进制的数字)和数量单位(一般不写),正文部分就是指定长度的实际内容,两部分之间用回车换行(CRLF)隔开。在最后一个长度为0的Chunk中的内容是称为footer的内容,是一些附加的Header信息(通常可以直接忽略)

这个问题是我们组一位实习同学抛出来的,值得表扬一下,大家对于这么细节的东西,估计是看一眼就过去了,而这位同学却把这个问题丢给了我,本着负责到底的精神,一起把问题的原因给找出来啦!





除非注明,本站文章均为原创。本文基于 BY-NC-SA 协议进行授权,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 metaboy(包含链接).

本文链接地址: http://blog.wangyuxiong.com/archives/51455

订阅本站:http://www.wangyuxiong.com/feed

分类: 测试技术         标签: ,
目前还没有任何评论.

无觅相关文章插件,快速提升流量