简述:
QQ空间提出一个需求,要求qzhttp支持chunked+gzip。每个chunk是一个独立的gzip压缩包,并提到雅虎是这么实现的。
分析结论:
1.雅虎的chunked+gzip的方式,每个chunk并不是一个独立的gzip压缩包。
2.如果采用chunked+gzip方式,并且每个chunk都是一个gzip压缩包的方式,浏览器不支持(用ie和chrome测试)。
一. 首先对于雅虎搜索chunked+gzip的一个抓包分析。
第一段chunk,前2个字节是标准的gzip包头0x1f8b
二.
为了快速测试,用php脚本实现了一个简单的web server。(见下)
1.
用cat参数启动server
./chunked_gzip.php cat
从图中可以看到分了三个chunk,每个chunk都是一个标准的gzip压缩包。
对应php中的代码:
IE对此的反应是只显示的第一个chunk.
Chrome对此的反应同样的正确的。
原文:HTTP servers sometimes use compression (gzip or deflate) to allow reducing time spent for transmission. Chunked transfer encoding can be used to delimit parts of the compressedobject. In this case, it is worth noting that the chunks are not individually compressed.Instead, the complete payload is compressed and the output of the compression process is chunked using the scheme described in this article.
译:http server 有时候用压缩来减少传输时间。Chunked方式可以将压缩后的数据分成好几块。在这种情况下,值得注意的是这些chunks并不是分别(独立)被压缩的,相反,整个压缩处理后的输出再用前面讲到的chunked方式传输。
http://en.wikipedia.org/wiki/Chunked_transfer_encoding
php测试脚本代码:

本文探讨了QQ空间提出的需求——支持chunked+gzip技术,并通过对比雅虎的实现方式,验证了浏览器对该技术的支持情况。分析表明,雅虎采用的chunked+gzip并非每个chunk独立压缩,而是一种整体压缩后再分块的方法。此外,实验还测试了不同浏览器对两种chunked+gzip实现方式的兼容性。
215

被折叠的 条评论
为什么被折叠?



