精华内容
下载资源
问答
  • 之前的几个版本使用和调试都正常,也同样的使用了fiddler2来进行跟踪,...GZip 头中的幻数不正确。请确保正在传入 GZip 流 这个让人发疯的问题,经过使用fiddler2发现,在申请网页的时候发现了并没有使用Accept-Encoding

    之前的几个版本使用和调试都正常,也同样的使用了fiddler2来进行跟踪,突然有一天早上进行改版,发现了

    GZip 头中的幻数不正确。请确保正在传入 GZip 流

    这个让人发疯的问题,经过使用fiddler2发现,在申请网页的时候发现了并没有使用Accept-Encoding: gzip, deflate这个编码来请求GZIP流,所以才会使程序用GZIP来解读的时候出现错误.

    开始的时候以为是网站改版了,可是使用客户告诉我他的正常(就是原来的版本),恶梦开始了,经过了一下午的折腾,百度,就是没找到原因,但是为什么不使用Accept-Encoding: gzip, deflate来请求呢?难道跟我升级FLASH有关系么?卸载,重新安装IE6等等,可是IE去读取网页的时候也不使用Accept-Encoding: gzip, deflate,这更让我头疼了.

    第二天一早换一个思路, 在虚拟机上打开,但是之前没有安装fiddler2,这次安装上,后来发现使用原来版本一切正常,看来问题是在开发机上了.

    最后发现IE的一个高级选项的[通过代理连接使用HTTP 1.1]这个选项打上勾,就可以了,但是打开Ffiddler2,使用正常的版本,还是一样出错.突然想起来了ie和自己的程序不一样,会不会因为跟踪以后将内容改变了呢?于是关闭了fiddler2并且打开程序一切正常,至此找到了原因.

    可能是知识比较少所以找原因也很笨吧.但是这么好的跟踪软件不使用,难道要重新安装系统么?不行的话只能使用原来一直使用的  http analyzer跟踪软件了,但是说真话,这个软件出现错误的机率很多,可能个人原因的问题吧.

    总结: 如果说在同一种环境下进行测试那是很不方便的,但是现在有的虚拟机,所以在开发机上可能会出现很多问题,但是到了测试机上却正常,这个时候就应该将[问题]的目光投向开发机上了.

    展开全文
  • gzip头部格式

    万次阅读 2013-01-16 15:48:42
    注意两个加好表示一个字节(8位)gzip头的格式: +---+---+---+---+---+---+---+---+---+---+ |ID1|ID2|CM |FLG| MTIME |XFL|OS | (more-->) +---+---+---+---+---+---+---+---+---+---+ (if FLG.FEXTRA set) +---...
    注意两个加好表示一个字节(8位)
    gzip头的格式:
    
    +---+---+---+---+---+---+---+---+---+---+
    |ID1|ID2|CM |FLG|     MTIME     |XFL|OS | (more-->)
    +---+---+---+---+---+---+---+---+---+---+
    
    (if FLG.FEXTRA set)
    
    +---+---+=================================+
    | XLEN  |...XLEN bytes of "extra field"...| (more-->)
    +---+---+=================================+
    
    (if FLG.FNAME set)
    
    +=========================================+
    |...original file name, zero-terminated...| (more-->)
    +=========================================+
    
    (if FLG.FCOMMENT set)
    
    +===================================+
    |...file comment, zero-terminated...| (more-->)
    +===================================+
    
    (if FLG.FHCRC set)
    
    +---+---+
    | CRC16 |
    +---+---+
    
    +=======================+
    |...compressed blocks...| (more-->)
    +=======================+
    
     0   1   2   3   4   5   6   7
    +---+---+---+---+---+---+---+---+
    |     CRC32     |     ISIZE     |
    +---+---+---+---+---+---+---+---+
    

    ID1与ID2:各1字节。固定值,ID1 = 31 (  '\037' ,0x1F),ID2 = 139(  '\213' ,0x8B),指示GZIP格式。
    CM:1字节。压缩方法。
    0: store (copied)
    1: compress
    2: pack
    3: lzh
    4-7: 保留
    8: deflate

    FLG:1字节。标志。
    bit 0 FTEXT - 指示文本数据
    bit 1 FHCRC - 指示存在CRC16头校验字段
    bit 2 FEXTRA - 指示存在可选项字段
    bit 3 FNAME - 指示存在原文件名字段
    bit 4 FCOMMENT - 指示存在注释字段
    bit 5-7 保留

    MTIME:4字节。更改时间。UINX格式。
    XFL:1字节。附加的标志。
    OS:1字节。操作系统    
    IDOS
    0x00FAT filesystem (MS-DOS, OS/2, NT/Win32)
    0x01Amiga
    0x02VMS (or OpenVMS)
    0x03Unix
    0x04VM/CMS
    0x05Atari TOS
    0x06HPFS filesystem (OS/2, NT)
    0x07Macintosh
    0x08Z-System
    0x09CP/M
    0x0aTOPS-20
    0x0bNTFS filesystem (NT)
    0x0cQDOS
    0x0dAcorn RISCOS
    0xffunknown 

    额外的头字段:(可选的)
    若 FLG 的 bit 2 FEXTRA =   的值为1时需要添加一下格式内容
    +---+---+-------+----------------------------+
    |SI1 | SI2 |  XLEN  | 长度为XLEN字节的可选       |
    +---+---+-------+----------------------------+

    若 FLG 的 bit 3 FNAME 的值为1时需要添加一下格式内容

    +----------------------------------------------+
    |              原文件名(以NULL结尾)           |
    +----------------------------------------------+

    (若  FLG 的  bit 4 FCOMMENT 的值为1时需要添加一下格式内容

    +-------------------------------------------------+
    |   注释文字(只能使用iso-8859-1字符,以NULL结尾)  |
    +-------------------------------------------------+

    若  FLG 的  bit 1 FHCRC  的值为1时需要添加一下格式内容

    +-------+
    | CRC16 |
    +-------+

    2. 数据部分

    通常采用deflate格式的数据

    3. 尾部分

    CRC32:4字节。原始(未压缩)数据的32位校验和。
    ISIZE:4字节。原始(未压缩)数据的长度的低32位。

    blog: http://blog.csdn.net/rentiansheng/article/details/8509558
           
    展开全文
  • GZip 文件获取和尾信息的函数[gz, br] = gzContentsInfo( gzFilePath ) 例如 [gz, br] = gzContentsInfo( 'D:\myfile.ext.gz' ); 输入: gzFilePath - 作为 GZip 文件的字符或 cellstr 的名称或路径, 支持...
  • Nginx中gzip配置

    千次阅读 2017-01-16 18:46:56
    nginx中gzip压缩(节省带宽) 原理: 浏览器---请求----> 声明可以接受 gzip压缩 或 deflate压缩 或compress 或 sdch压缩 从http协议的角度看--请求 声明 acceopt-encoding: gzip deflate sdch (是指压缩算法,其中...
    nginx中gzip压缩(节省带宽)
    原理:
    浏览器---请求----> 声明可以接受 gzip压缩 或 deflate压缩 或compress 或 sdch压缩
    从http协议的角度看--请求头 声明 acceopt-encoding: gzip deflate sdch  (是指压缩算法,其中sdch是google倡导的一种压缩方式,目前支持的服务器尚不多)
    服务器-->回应---把内容用gzip方式压缩---->发给浏览器
    浏览<-----解码gzip-----接收gzip压缩内容----
    
    官方文档 http://nginx.org/en/docs/http/ngx_http_gzip_module.html
    
    gzip配置的常用参数
    gzip on|off;  #是否开启gzip
    gzip_buffers 32 4K| 16 8K #缓冲(压缩在内存中缓冲几块? 每块多大?)
    gzip_comp_level [1-9] #推荐6 压缩级别(级别越高,压的越小,越浪费CPU计算资源)
    gzip_disable #正则匹配UA 什么样的Uri不进行gzip
    gzip_min_length 200 # 开始压缩的最小长度(再小就不要压缩了,意义不在)
    gzip_http_version 1.0|1.1 # 开始压缩的http协议版本(可以不设置,目前几乎全是1.1协议)
    gzip_proxied          # 设置请求者代理服务器,该如何缓存内容
    gzip_types text/plain  application/xml # 对哪些类型的文件用压缩 如txt,xml,html ,css
    gzip_vary on|off  # 是否传输gzip压缩标志
    
    注意: 
    图片/mp3这样的二进制文件,不必压缩
    因为压缩率比较小, 比如100->80字节,而且压缩也是耗费CPU资源的,比较小的文件不必压缩
    
    nginx中的expires缓存(缓存在浏览器中 提高网站性能)
    使用场景:对于网站的图片,尤其是新闻站, 图片一旦发布, 改动的可能是非常小的.我们希望 能否在用户访问一次后, 图片缓存在用户的浏览器端,且时间比较长的缓存.
    列如:缓存一个小时
    location ~.\.(jpg|png|jpeg|gif){
         expires 1d;
    }
    (注意:服务器的日期要准确,如果服务器的日期落后于实际日期,可能导致缓存失效)
    304 也是一种很好的缓存手段
    原理是: 服务器响应文件内容是,同时响应etag标签(内容的签名,内容一变,他也变), 和 last_modified_since 2个标签值浏览器下次去请求时,头信息发送这两个标签, 服务器检测文件有没有发生变化,如无,直接头信息返回 etag,last_modified_since浏览器知道内容无改变,于是直接调用本地缓存.
    这个过程,也请求了服务器,但是传着的内容极少.
    对于变化周期较短的,如静态html,js,css,比较适于用这个方式


    展开全文
  • 文件由固定长度的部分和扩展部分组成,扩展部分不一定存在,尤其是网络传输使用的HTTP压缩,如果使用了gzip格式,那么对应的压缩报文一般都不带扩展部分。gzip文件格式通过将头部定长部分的某些比特位置位来标识...

    文件头由固定长度的部分和扩展部分组成,扩展部分不一定存在,尤其是网络传输使用的HTTP压缩,如果使用了gzip格式,那么对应的压缩报文一般都不带扩展部分。gzip文件格式通过将头部中定长部分的某些比特位置位来标识头部是否带有扩展部分,我们一一来看。

     

    以下各字段的中文含义,我在网上搜了好久也没找到理想的,这里我将RFC1952中的英文释义粗略的翻译一下,不足之处欢迎吐槽。

     

    1、 文件以10字节的定长部分开始

    +------+------+------+-------+---+---+---+---+------+-----+

    ID1   |  ID2  |   CM  |   FLG   |       MTIME       |  XFL  |  OS  |

    +------+------+------+-------+---+---+---+---+------+-----+

    上面两个“+”之间的内容代表一个字节,所以上面除了MTIME使用四个字节之外,其他只占用一个字节。

     

    ID1ID2IDentification:这两个字节用于标识gzip文件,其中,ID1 = 31(0x1f,\037),ID2 = 139(0x8b,\213),如果判断某文件以这两个字节开头,那么可以初步认为这是gzip文件,但具体是不是,必须该文件格式完全符合gzip文件格式才行;

    CM(CompressionMethod):该字段用于标识当前gzip压缩文件内部的压缩结果所使用的压缩方法,取值范围[0,8](提示,这是一个闭区间),其中,[0,7]保留,目前只用8,即gzip使用deflate压缩方法;

    FLG(FLaGs):标记位,该标记位中的每一比特分别代表后面对应扩展位是否存在,各比特位含义如下, 

       Bit 0        FTEXT

       Bit 1        FHCRC

       Bit 2        FEXTRA

       Bit 3        FNAME

       Bit 4        FCOMMENT

       Bit 5~7   预留,必须全0

    Bit 0     FTEXT,如果置位,则表明文件(应该是指被压缩文件)是ASCII文本文件。这一位是否置位是可选的,压缩工具通过检查少量输入数据中是否含有非ASCII字符来将其置位。一旦怀疑有非ASCII字符,就不置位,表示这是二进制文件。那些对ASCII文本文件和二进制文件使用不同文件格式的系统,解压缩工具会通过这一位是否置位来决定合适的文件格式。我们故意不让压缩所使用的算法来设置这一位,因为压缩工具本身可以选择是否将其置位,而且解压缩工具通常也可以选择忽略这一位并将数据转换的问题抛给其他程序。

    Bit 1     FHCRC,如果置位,表示会对gzip文件头部进行CRC16校验,校验结果会放在实际的压缩数据之前,紧挨着实际的压缩数据。CRC16由CRC32的两个低有效字节组成,CRC32用于计算整个gzip头的校验和,但计算时不包括CRC16所占的这两个字节。这一位一般不会被置上。(注意:这里说的这个CRC32与我们后面要说的位于gzip文件尾的那个CRC32不是同一个CRC32!!!但都是用32位循环冗余校验码算法计算得到的,只是作用对象不同。这里的CRC32作用对象是gzip头,完成计算后只取两个低有效字节,构成CRC16;而我们后面要说的位于gzip文件尾的CRC32的作用对象是全部的原始待压缩数据,这两个概念一定要理清)。

    Bit 2     FEXTRA,如果置位,表示带着扩展gzip头部部分。扩展部分后续介绍。

    Bit 3     FNAME,如果置位,表示携带被压缩文件的文件名(没被压缩),该文件名会以’\0’结束(就是个字符串)。该文件名必须由ISO 8859-1 (LATIN-1) 中的字符组成;在那些使用EBCDIC或其他字符集组成名称的系统中,文件名称必须被转换为ISO LATIN-1 字符集才能让gzip文件携带。这个文件名是被压缩文件的原始文件名,不携带任何的路径信息,只是个文件名而已。如果被压缩文件在一个对名称字母大小写不敏感的文件系统上,则文件名称必须全部小写。如果被压缩数据不是来自一个有文件名称的文件,则不携带文件名称(比如使用gzip压缩HTTP应答报文);例如,被压缩数据来自Unix系统的标准输入,则gzip文件不携带文件名。

    Bit 4     FCOMMENT,如果置位,表示携带以‘\0’结尾的文件说明(这个文件说明也是个字符串)。这个说明只是给人们去使用的,类似HTTP应答报文头部中的状态码原因短语。这个文件说明也必须使用ISO 8859-1 (LATIN-1)中的字符。换行时应该用一个十进制换行符。

    MTIMEModificationTIME:该字段给出了那个被压缩的原始文件最近被修改的时间。该时间使用Unix格式,即,自1970年1月1日0时起到现在的秒数。注意,对于MS-DOS或其他使用本地时间而不是使用通用时间的系统,这种方式可能会引起问题。如果不是压缩一个文件,那么该字段就是压缩工作开始的那个时间。如果该字段为0,则表示没有可用的时间戳(这种情况在使用gzip的HTTP压缩报文中很常见)。

    XFLeXtraFLags:这个字段是专门给gzip文件中使用的压缩方法用的,由于当前gzip只使用一种压缩方法,或压缩算法,即deflate,所以针对deflate,该字段有如下含义,

    XFL= 2 – 压缩率最大但是压缩速度最慢(的那个压缩级别);

    XFL= 4 – 最快的压缩(级别);

    (注:deflate 是分0~9种压缩级别的,后续分析压缩源码的章节会专门分析压缩级别)

    OSOperatingSystem:这个字段表示干压缩这件事儿的那个文件系统。这个字段对于确定文本文件的行结束标志是非常有用的。这个字段的当前值分别代表如下系统,

    0- FAT filesystem (MS-DOS, OS/2, NT/Win32)

    1- Amiga

    2- VMS (or OpenVMS)

    3- Unix

    4- VM/CMS

    5- Atari TOS

    6- HPFS filesystem (OS/2, NT)

    7- Macintosh

    8- Z-System

    9- CP/M

    10- TOPS-20

    11- NTFS filesystem (NT)

    12- QDOS

    13- Acorn RISCOS

    255– unknown

     

    2、 头部扩展字段

    上面10个字节是无论如何都会存在的,而这里所描述的扩展字段,就是根据上面那10个字节来决定是否存在的。共分为四个部分,

    按照顺序依次是:FEXTRA+FNAME+FCOMMENT+FHCRC

    不一定都会存在,但是只要存在,不论存在几个,一定要按照顺序来,例如,FHCRC 和FNAME都存在,那么FNAME 一定要在FHCRC前面!!!下面我们逐个分析。

    FEXTRA

    +-----+-----+===============================================+

    |     XLEN      |………………………...XLEN bytes of "extra field"...| (more-->)

    +-----+-----+===============================================+

    XLEN用两个字节记录,表示extra field部分的大小。而extra field部分又细分为如下结构,

                       +--------+--------+--------+--------+========================+

                        |    SI1    |     SI2    |          LEN           |…………... LEN bytes ofsubfield data ...|

                       +--------+--------+--------+--------+========================+

    (我将这个部分翻译为次级域)SI1和SI2为这个次级域提供一个ID,这个ID通常由两个便于记忆的ASCII字母表示(这句话不知道是不是应该这么翻译)。Jean-Loup Gaillygzip@prep.ai.mit.edu(gzip源码作者)维护了一张次级域表,你可以将自己的次级域ID发送给他。SI2 = 0 的次级域ID目前保留,未来再用。现在的次级域ID是这样定义的,

           SI1       |        SI2       |        Data

     ----------      ----------     -------------

      0x41('A')      0x70 ('P')       Apollo file typeinformation(这个真不知道这么翻译)

    LEN给出了次级域数据部分的长度,但是不包括SI1、SI2和LEN这四个字节。

    FNAME

    +=========================================+

    |...originalfile name, zero-terminated...| (more-->)

    +=========================================+

    以‘\0’结束,就是个字符串

    FCOMMENT

    +===================================+

    |...filecomment, zero-terminated...| (more-->)

    +===================================+

    以‘\0’结束,就是个字符串

    FHCRC

    +-------+-------+

    |       CRC16        |

    +-------+-------+

    这个后面就是实际的压缩数据了,也就是虾的身子部分。

    展开全文
  • 本文将介绍gzip和Http的编码关系,以及在Android,如何正确使用gzip进行数据压缩传输。
  • gzip

    2014-01-06 15:08:33
    gzip(GNU-ZIP)是一种压缩技术。经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会块得多。gzip的压缩页面需要浏览器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后...
  • gzip(GUN-ZIP)是一种压缩技术,经过gzip压缩后的页面大小可以变成原来的30%或者更小。 用户浏览页面的时候速度也会更快,gzip的压缩...设置允许压缩的页面最小字节(从header的Content-Length获取) 建议大于1k gzip_
  • web性能优化--用gzip压缩资源文件

    万次阅读 多人点赞 2019-07-31 19:14:09
    一、gzip压缩技术 gzip(GNU- ZIP)是一种压缩技术。经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会快得多。...在实际的应用我们发现压缩的比率往往在3到10倍,也...
  • 网页开启gzip压缩以后,其体积可以减小20%~90%,可以节省下大量的带宽,从而减少页面响应时间,提高用户体验。 php配置改法: 复制代码 代码如下: zlib.output_compression = On ;开启gzip功能 zlib.output_...
  • HTTP gzip编码

    千次阅读 2009-07-30 11:06:00
    HTTP 的gzip编码与文件gzip编码一样,一点修改也没有,如果把...首先查看gzip格式,发现其是 gzip头+deflate编码+尾 1.gzip头一般使用1f8b08000000000000ff即可2.deflate编码 deflateInit2(&d_stream, Z_DEFAULT_CO
  • 从Http 技术细节上讲,就是 http request 头中 有 “Accept-Encoding”, “gzip” ,response 中就有返回头Content-Encoding=gzip 我们现在从浏览器上访问玩啥网站都是gzip格式传输的。 但是我们现在Android 客户端...
  • 本文实例分析了php curl中gzip的压缩性能测试。分享给大家供大家参考,具体如下: 前因: 请求接口次数很多,每日两亿多次,主要是有些接口返回数据量很大高达110KB(为了减少请求次数,将多个接口合并成一个导致的...
  • 利用CURL获取你网址或域名的HTTP,可以检测是否开启GZIP或者测试其他信息,本工具作者:风吟,更多说明请参照压缩包内的说明
  • gzip压缩笔记

    2016-05-02 16:23:51
    gzip 一种压缩格式,一种压缩方式,可以对网络传输的数据进行压缩....2.服务器压缩数据,返回数据,在响应里面添加Content-Encoding:gzip 3.客户端,根据Content-Encoding这个响应,对应解压 有Conten
  • c语言解压httpgzip文件

    千次阅读 2018-05-24 15:24:39
    这是一篇流水账,记录前两天在解决http解压gzip数据流程。(写完这篇就可以做其他工作了~~)目的:c语言http包中解析gzip数据一、 tcpdump抓包,这条数据包是我试用某app时收到的包,咱们先是用wireshark解析。图...
  • nginx gzip

    2019-08-26 07:17:57
    nginx中gzip的主要作用就是用来减轻服务器的带宽问题,经过gzip压缩后的页面大小可以变为原来的30%甚至更小,这样用户浏览页面时的速度会快很多。gzip的压缩页面需要浏览器和服务器双方都支持,实际上就是服务器端...
  • 最近做了一个项目,部署到线上发现首页打开特别慢,经了解可以在 nginx 配置gzip 压缩,于是试了试,访问速度快了一半。
  • nginx开启gzip

    千次阅读 2021-01-14 09:34:58
    一:开启gzip的原因? Nginx开启Gzip压缩功能,可以使网站的css、js 、xml、html 文件在传输时进行压缩,提高访问速度, 进而优化Nginx性能 二 :nginx如何配置gzip 在单个server块里添加即可 server{ ... ...
  • nginx如何设置gzip(总结) 一、总结 一句话总结: 真正用的时候,花一小点时间把gzip的各个字段的意思都看一下,会节约大量时间 直接gzip on:在nginx的配置就可以开启gzip压缩 server{ gzip on; ...
  • curl header gzip 区分头部和压缩内容。

    千次阅读 2011-08-16 14:58:19
    #PHP读gzip流 if (!function_exists('gzdecode')) { function gzdecode ($data) { $flags = ord(substr($data, 3, 1)); $headerlen = 10; $extralen = 0; $filenamelen = 0; if ($flags & 4) { ...
  • Gzip数据以1F8B开头,可以以此来划分文件Gzip和非Gzip数据。
  • gzip介绍gzip是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序。... nginx中gzip的主要作用就是用来减轻服务器的带宽问题,经过gzip压缩后的页面大小可以变为原来的30%甚至更小,这样用户浏览页面时的速度会快很多
  • Gzip压缩机制

    2017-10-20 11:49:16
    Gzip压缩机制 一、什么是gzipGzip是一种内容压缩格式,一般对纯文本内容可压缩到原大小的40-70左右%。在实际的应用我们发现压缩的... 现在大部份浏览器都可以浏览经过Gzip压缩过的内容,在请求的 (head)
  • Http gzip 处理

    千次阅读 2018-10-12 16:21:21
    在对网页抓包发现,返回的很多网页是经过压缩的,比如访问谷歌首页,返回的头文件包含Content-Encoding gzip 使用gzip可以省下很多网页流量,在网速一定的情况下,可以提高访问效率,我们用java访问时如何可以得到gzip...
  • 利用httpClient下载页面,先利用浏览器查询页面源代码得知页面编码为utf-8,但生成字符串后总是为乱码,经过查询得知,在设置httpGet参数时,设置了接受压缩类型为Gzip,但却没有对其进行解压缩。解压后在生成字符串...
  • nginx配置gzip压缩页面

    2021-01-09 23:32:37
    gzip(GNU-ZIP)是一种压缩技术。经过gzip压缩后页面大小可以变为原来...设置允许压缩的页面最小字节数,页面字节数从header得content-length进行获取。默认值是0,不管页面多大都压缩。建议设置成大于1k的字节数,小
  • 请求头部添加 gzip支持 httpRequest.addHeader(“Accept-Encoding”, “gzip”); 举例post上传params: 因为参数数据多,可以将参数转换成string,然后利用GZIPOutputStream进行压缩 try { List ...
  • GZIP压缩

    千次阅读 2012-08-21 10:36:48
    GZIP压缩是一个经常被用到...接下来我们就介绍一下什么是GZIP压缩,以及GZIP压缩是个什么概念。 GZIP网页压缩,是一种WEB服务器与浏览器之间共同遵守的协议,也就是说WEB服务器和浏览器都必须支持该技术才能实现GZIP

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 92,402
精华内容 36,960
关键字:

gzip头中的