简述:
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测试脚本代码: