zoukankan      html  css  js  c++  java
  • HTTP chunked+gzip及浏览器兼容测试

    HTTP chunked+gzip及浏览器兼容测试_ifreax_新浪博客

    HTTP chunked+gzip及浏览器兼容测


    简述:


    QQ空间提出一个需求,要求qzhttp支持chunked+gzip。每个chunk是一个独立的gzip压缩包,并提到雅虎是这么实现的。


    分析结论:

    1.雅虎的chunked+gzip的方式,每个chunk并不是一个独立的gzip压缩包。

    2.如果采用chunked+gzip方式,并且每个chunk都是一个gzip压缩包的方式,浏览器不支持(iechrome测试)


    . 首先对于雅虎搜索chunked+gzip的一个抓包分析。

    HTTP <wbr>chunked+gzip及浏览器兼容测试


    第一段chunk,2个字节是标准的gzip包头0x1f8b

    HTTP <wbr>chunked+gzip及浏览器兼容测试


    第二段chunk,2个字节则不是标准的gzip包头。

    HTTP <wbr>chunked+gzip及浏览器兼容测试
    如果将yahoohttp回包中头字段和chunk控制字段去掉保存起来,会得到一个标准的gzip包,可以用7-zip打开。

    所以yahoo搜索的chunked+gzip模式中的每个chunk并不是一个可独立解压的gzip包。




    关于对浏览器对chunked+gzip的支持测试。

    为了快速测试,用php脚本实现了一个简单的web server。(见下)


    1. 
    每个chunk单独压缩。

    cat参数启动server serverphp脚本见下)

    ./chunked_gzip.php cat

    HTTP <wbr>chunked+gzip及浏览器兼容测试


    从图中可以看到分了三个chunk,每个chunk都是一个标准的gzip压缩包。


    对应php中的代码:

    HTTP <wbr>chunked+gzip及浏览器兼容测试

    IE对此的反应是只显示的第一个chunk.

    HTTP <wbr>chunked+gzip及浏览器兼容测试

    Chrome对此的反应是正确显示第一个chunk,其它的就乱来了。

    HTTP <wbr>chunked+gzip及浏览器兼容测试

    2.

    如果将整个包体压缩成一个gzip包,然后分成多个chunk


    dog参数启动serverserver php脚本见附件)

     ./trucked_gzip.php
    dog

    HTTP <wbr>chunked+gzip及浏览器兼容测试


    从图中可以看到所有的chunk合在一起是一个压缩包,gzip标准头只出现了一次0x1f8b


    对应php
    server
    里面的代码是:

    HTTP <wbr>chunked+gzip及浏览器兼容测试

    IE对此的反应是能正确显示。

    HTTP <wbr>chunked+gzip及浏览器兼容测试

    Chrome对此的反应同样的正确的。

    HTTP <wbr>chunked+gzip及浏览器兼容测试

      三.  

    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 <wbr>chunked+gzip及浏览器兼容测试


     

  • 相关阅读:
    OpenWrt arp 命令发布
    [Cocos2d-x]Cocos2d-x 3.2 学习笔记
    智课雅思词汇---二十四、名词性后缀ary(也是形容词后缀)
    算法讲课---1、贪心
    智课雅思词汇---二十三、名词性后缀mony
    js进阶---12-11、jquery如何给动态创建出来的元素绑定事件
    js进阶---12-12、jquery事件委托怎么使用
    js进阶---12-10、jquery绑定事件和解绑事件是什么
    新东方雅思词汇---7.3、dioxide
    对啊英语音标---四、双元音常见的字母发音组合有哪些
  • 原文地址:https://www.cnblogs.com/lexus/p/2377291.html
Copyright © 2011-2022 走看看