免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
gzip zlib deflate 相關(guān)介紹

HTTP的角度

1 客戶端 http Request  Header上帶上 Accept-Encoding:gzip,deflate

2服務(wù)器若是支持gzip壓縮則在http reponse eader

部分返回Content-Encoding: gzip 或者Content-Type: application/x-gzip

3body部分用gzip解壓縮 則得到網(wǎng)頁內(nèi)容.

傳說中iebug 在處理js css壓縮的時(shí)候有bug,我不理解 挺簡單的怎么會有bug.

gzip的角度

gzip是一種數(shù)據(jù)格式 默認(rèn)且目前僅使用deflate算法壓縮data部分

zlib也是一種數(shù)據(jù)格式,使用defalte算法壓縮數(shù)據(jù)部分.

deflate是一種壓縮算法,huffman編碼的一種加強(qiáng)

 

zlib是一個(gè)開源庫, 提供deflate壓縮和對應(yīng)的infalte解壓縮.

不過zlib默認(rèn)的deflate infalte默認(rèn)是處理zlib格式數(shù)據(jù).必須使用

deflateInit2(&strm, DEFAULT_COMPRESSION,Z_DEFLATED, DEFAULT_WINDOWSIZE,DEFAULT_MEMLEVEL, Z_DEFAULT_STRATEGY);

初始化才是處理raw deflate data.(這一點(diǎn)在zlib manul沒有提,faq中提到,困擾了我好久,還是同事L幫我調(diào)試發(fā)現(xiàn))

至于gzip格式解析 對著RFC寫就可以了.

參見RFC 1950 關(guān)于zlib http://www.faqs.org/rfcs/rfc1950.html

      RFC 1951 關(guān)于deflate http://www.faqs.org/rfcs/rfc1951.html

      RFC 1952 關(guān)于gzip http://www.faqs.org/rfcs/rfc1952.html 


nt  CGzip::Ungzip(const std::string & inStr , std::string &outStr){
    static int nFileCount=0;
        nFileCount++;
    string strZipFileName="test";
//    CConvert::StrToFile(inStr,strZipFileName+CConvert::toString<int>(nFileCount)+"H.gzip"

;
    if(inStr.length()<11){
        return -1;   
    }
    //process gzip header
    unsigned int skipCt = 10;
    unsigned int skipZeroCt = 0;
    unsigned char ID1 = inStr[0];
    unsigned char ID2 = inStr[1];
    unsigned char XFL=inStr[8];
    bool bFEXTRA = false ;
    bool bFNAME = false ;
    bool bFCOMMENT = false ;
    bool bFHCRC = false ;
    unsigned int XLEN = 0;
   
    if( (ID1!=31) && (ID2!=139)){
        return -1;  //gzip頭部
        }
    unsigned char CM = inStr[2];
    if(CM!=
{
        return -1; //
現(xiàn)在都只處理 deflate壓縮的
    }
    unsigned char FLG = inStr[3];
    if( (FLG & GZIP_HEAD_FEXTRA) != 0){
        bFEXTRA = true ;
        skipCt += 2;
        XLEN = inStr[10]+ inStr[11]*256 ;//
按照小端字節(jié)序列處理
        skipCt += XLEN;
    }
    if( (FLG & GZIP_HEAD_FNAME) != 0){
        bFNAME = true;
        skipZeroCt++;
    }
    if( (FLG & GZIP_HEAD_FCOMMENT) != 0){
        bFCOMMENT = true;
        skipZeroCt++;   
    }
   
    size_t passedZeroCt = 0;
   
    size_t iStep = skipCt ;
    for( size_t iStep =  skipCt ; iStep<inStr.length(); iStep++){
            if(passedZeroCt>=skipZeroCt){
                break;   
            }
            if(inStr[iStep]==''
{
                passedZeroCt++;   
            }
       
    }
    skipCt = iStep ;
    if( (FLG & GZIP_HEAD_FHCRC) != 0){
        bFHCRC = true;
        skipCt+=2 ;
    }
        string coreStr = inStr.substr(skipCt,inStr.length()-8-skipCt);
           return CGzip::Inflate(coreStr,outStr);
   
   
   
}

 

int  CGzip:

ogzip(const std::string & inStr , std::string &outStr){
    char pAddHead[10];
    unsigned long crc = 0;
    // gzip header
    static const char deflate_magic[2] = {'37', '\213'};
    snprintf(pAddHead, 10,
            "%c%c%c%c%c%c%c%c%c%c", deflate_magic[0],
            deflate_magic[1], Z_DEFLATED, 0 /* flags */,
            0, 0, 0, 0 /* 4 chars for mtime */,
            0 /* xflags */, 0xff);
    string addHead(pAddHead,10);
    //gzip's raw deflate body
    if(CGzip:
eflate(inStr,outStr)<0){
        return - 1;   
    }
    //gzip trailer
    crc = crc32(crc, (const Bytef*)inStr.data(), inStr.length());
    char  tailBuf[8];
    memcpy(tailBuf, &crc, 4);
    int isize=inStr.size();
    memcpy(tailBuf,&isize,4);
    string tailStr(tailBuf , 8 );
    outStr = addHead + outStr+tailStr;     //
    return outStr.length(); //

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ZLIB 壓縮的數(shù)據(jù)格式規(guī)范 版本 3.3(撼庭秋譯自 RFC 1950) — Windo...
IE不支持deflate
zlib and gzip
關(guān)于web壓縮,gzip等
PHP 網(wǎng)站優(yōu)化
zlib解壓縮gzip
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服