HTTP chunked+gzip及浏览器兼容测试(转载自ifreax的blog)
来源:互联网 发布:mac mini 内存 编辑:程序博客网 时间:2024/06/14 09:50
简述:
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包头。
二.
为了快速测试,用php脚本实现了一个简单的web server。(见下)
1.
用cat参数启动server
./chunked_gzip.php cat
从图中可以看到分了三个chunk,每个chunk都是一个标准的gzip压缩包。
对应php中的代码:
IE对此的反应是只显示的第一个chunk.
Chrome对此的反应是正确显示第一个chunk,其它的就乱来了。
2. 如果将整个包体压缩成一个gzip包,然后分成多个chunk。
用dog参数启动server(server php脚本见附件)
从图中可以看到所有的chunk合在一起是一个压缩包,gzip标准头只出现了一次0x1f8b。
对应php server里面的代码是:
IE对此的反应是能正确显示。
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测试脚本代码:
- HTTP chunked+gzip及浏览器兼容测试(转载自ifreax的blog)
- 模拟http请求,支持gzip,chunked格式
- 在线HTTP速度测试(响应时间测试)及浏览器兼容测试
- 在线HTTP速度测试(响应时间测试)及浏览器兼容测试
- C++的内存管理(转载自:http://blog.csdn.net/bizhu12/article/details/6668834)
- C++ 运算符的重载(转载自http://blog.csdn.net/insistgogo/article/details/6626952)
- 关于GCD 的全解(转载自http://blog.csdn.net/wangqiuyun/article/details/19198467)
- angular js摸态框的用法(转载自http://my.oschina.net/u/2332658/blog/491066)
- http的chunked方式
- http协议里的chunked编码与测试
- http协议里的chunked编码与测试
- 转载自http://blog.csdn.net/dongfengsun
- 转载自demonstrate 的 blog
- 【C++注意事项】1 数据类型及类-------自http://blog.csdn.net/nomasp处转载
- 批处理文件-BAT详解(转载自http://hll142475.blog.163.com/blog/static/6213820085394035164)
- 深入理解枚举(转载自Blog : http://blog.csdn.net/javazejian )
- 转载自http://m.blog.csdn.net/blog/tylanbin/18766171
- 二叉查找树的实现(BST)(转载自http://blog.csdn.net/collonn/article/details/18732079)
- 从一个APK调用另外一个APK中的一个ACTIVITY
- STL 简介,标准模板库
- Android随记------休眠状态对Camera预览的影响
- 自己动手开发jQuery插件
- 交互设计相关网站
- HTTP chunked+gzip及浏览器兼容测试(转载自ifreax的blog)
- hibernate连接与JDBC连接的区别
- 查找输入的十个数中与已知数相同的数(c语言)
- 用户 'sa' 登录失败。 连接SQL2000出现的问题。
- POJ-1016
- JAVA——static
- POJ-1017
- C/C++中的typedef struct 和 struct区别
- POJ-1018