HTTP chunked+gzip及浏览器兼容测试
2012-03-02 15:32
579 查看
HTTP chunked+gzip及浏览器兼容测试_ifreax_新浪博客
简述:
QQ空间提出一个需求,要求qzhttp支持chunked+gzip。每个chunk是一个独立的gzip压缩包,并提到雅虎是这么实现的。
分析结论:
1.雅虎的chunked+gzip的方式,每个chunk并不是一个独立的gzip压缩包。
2.如果采用chunked+gzip方式,并且每个chunk都是一个gzip压缩包的方式,浏览器不支持(用ie和chrome测试)。
一. 首先对于雅虎搜索chunked+gzip的一个抓包分析。
第一段chunk,前2个字节是标准的gzip包头0x1f8b
第二段chunk,前2个字节则不是标准的gzip包头。
如果将yahoo的http回包中头字段和chunk控制字段去掉保存起来,会得到一个标准的gzip包,可以用7-zip打开。
所以yahoo搜索的chunked+gzip模式中的每个chunk并不是一个可独立解压的gzip包。
二. 关于对浏览器对chunked+gzip的支持测试。
为了快速测试,用php脚本实现了一个简单的web server。(见下)
1. 每个chunk单独压缩。
用cat参数启动server (server的php脚本见下)
./chunked_gzip.php cat
从图中可以看到分了三个chunk,每个chunk都是一个标准的gzip压缩包。
对应php中的代码:
IE对此的反应是只显示的第一个chunk.
Chrome对此的反应是正确显示第一个chunk,其它的就乱来了。
2.
如果将整个包体压缩成一个gzip包,然后分成多个chunk。
用dog参数启动server(server php脚本见附件)
./trucked_gzip.php
dog
从图中可以看到所有的chunk合在一起是一个压缩包,gzip标准头只出现了一次0x1f8b。
对应php
server里面的代码是:
IE对此的反应是能正确显示。
Chrome对此的反应同样的正确的。
三.
在wikipedia上有对于chunked+gzip是不是分段压缩的明确说明
原文: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 compressed object. 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测试脚本代码:
HTTP chunked+gzip及浏览器兼容测
简述:
QQ空间提出一个需求,要求qzhttp支持chunked+gzip。每个chunk是一个独立的gzip压缩包,并提到雅虎是这么实现的。
分析结论:
1.雅虎的chunked+gzip的方式,每个chunk并不是一个独立的gzip压缩包。
2.如果采用chunked+gzip方式,并且每个chunk都是一个gzip压缩包的方式,浏览器不支持(用ie和chrome测试)。
一. 首先对于雅虎搜索chunked+gzip的一个抓包分析。
第一段chunk,前2个字节是标准的gzip包头0x1f8b
第二段chunk,前2个字节则不是标准的gzip包头。
如果将yahoo的http回包中头字段和chunk控制字段去掉保存起来,会得到一个标准的gzip包,可以用7-zip打开。
所以yahoo搜索的chunked+gzip模式中的每个chunk并不是一个可独立解压的gzip包。
二. 关于对浏览器对chunked+gzip的支持测试。
为了快速测试,用php脚本实现了一个简单的web server。(见下)
1. 每个chunk单独压缩。
用cat参数启动server (server的php脚本见下)
./chunked_gzip.php cat
从图中可以看到分了三个chunk,每个chunk都是一个标准的gzip压缩包。
对应php中的代码:
IE对此的反应是只显示的第一个chunk.
Chrome对此的反应是正确显示第一个chunk,其它的就乱来了。
2.
如果将整个包体压缩成一个gzip包,然后分成多个chunk。
用dog参数启动server(server php脚本见附件)
./trucked_gzip.php
dog
从图中可以看到所有的chunk合在一起是一个压缩包,gzip标准头只出现了一次0x1f8b。
对应php
server里面的代码是:
IE对此的反应是能正确显示。
Chrome对此的反应同样的正确的。
三.
在wikipedia上有对于chunked+gzip是不是分段压缩的明确说明
原文: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 compressed object. 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测试脚本代码:
相关文章推荐
- HTTP chunked+gzip及浏览器兼容测试(转载自ifreax的blog)
- HTTP chunked+gzip及浏览器兼容测试 转
- 在线HTTP速度测试(响应时间测试)及浏览器兼容测试
- 在线HTTP速度测试(响应时间测试)及浏览器兼容测试
- 在网页中插入FLV视频,经测试兼容IE、火狐、谷歌等浏览器
- [经典]跨浏览器兼容测试8大利器
- 使用epoll,完成简单http消息回显,并用浏览器测试
- 万能js实现翻页,动态生成内容自动翻页,兼容各种浏览器(已测试)----神器版!
- 跨浏览器兼容测试8大利器
- JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
- 浏览器兼容之JavaScript篇——已在IE、FF、Chrome测试
- IE兼容问题 (查询浏览器是否支持的网址http://caniuse.com/#search=transform)
- 万能js实现翻页,兼容各种浏览器(已测试)----屌丝版!
- 最全的CSS浏览器兼容问题http://www.68design.net/Web-Guide/HTMLCSS/37154-1.html
- 浏览器兼容之JavaScript篇——已在IE、FF、Chrome测试
- JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
- 设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码 详细出处参考:http://www.jb51.net/article/35063.htm
- javascript 操作日期 测试(注意浏览器兼容问题)
- [转帖] 了解各种浏览器真正的核心,测试兼容时就不用开这么多浏览器
- XMLHttp兼容多种不同版本的浏览器