developer tip

GZIP에 비해 압축 브라우저 호환성 및 이점 축소

copycodes 2020. 9. 8. 08:09
반응형

GZIP에 비해 압축 브라우저 호환성 및 이점 축소



2012 년 2 월 10 일 업데이트 :

zOompf는 여기에서 바로이 주제에 대한 매우 철저한 연구를 완료 했습니다 . 아래의 결과를 능가합니다.


2010 년 9 월 11 일 업데이트 :

여기에 테스트 플랫폼이 생성되었습니다 .




일부 배경 정보에 대한 GZIP 및 DEFLATE (zlib)의 HTTP 1.1 정의 :

" 'Gzip'은 gzip 형식이고 'deflate'는 zlib 형식 입니다. 원시 deflate 압축 데이터 형식과의 혼동을 피하기 위해 두 번째 형식 인 'zlib'를 호출했을 것입니다. HTTP 1.1 RFC 2616은 'deflate'전송 인코딩에 대한 RFC 1950의 zlib 사양에서 RFC 1951의 deflate 사양에 따라 원시 deflate 데이터를 잘못 생성하거나 예상하는 서버 및 브라우저에 대한보고가있었습니다 . 특히 Microsoft 제품 입니다. zlib 형식을 사용하는 전송 인코딩은보다 효율적인 접근 방식입니다 ( 실제로 zlib 형식이 설계된 용도), 'gzip'전송 인코딩을 사용하는 것은 아마도 HTTP 1.1 작성자가 이름을 잘못 선택했기 때문에 더 신뢰할 수 있습니다. "(출처 : http://www.gzip.org/zlib/zlib_faq.html )

그래서, 내 질문 : 내가 zlib 래퍼 (또는 gzip, 그 문제에 대해)로 RAW deflate 데이터를 보내면 원시 deflate를 이해할 수없는 최신 브라우저 (예 : IE6 이상, FF, Chrome, Safari 등)가 있습니까? 압축 된 데이터 (HTTP 요청 헤더 "Accept-Encoding"에 "deflate"가 포함되어 있다고 가정)?

Deflate 데이터는 항상 GZIP보다 몇 바이트 더 작습니다.

이러한 모든 브라우저가 데이터를 성공적으로 디코딩 할 수 있다면 zlib 대신 RAW deflate를 보내는 데 어떤 단점이 있습니까?



2010 년 9 월 11 일 업데이트 :

여기에 테스트 플랫폼이 생성되었습니다 .


업데이트 : 브라우저는 raw deflate에 대한 지원을 중단했습니다. zOompf는 여기에서 바로이 주제에 대한 매우 철저한 연구를 완료 했습니다 . 불행히도, 생수 수축은 사용하기에 안전하지 않은 것으로 보입니다.


더 많은 결과를 보려면 http://www.vervestudios.co/projects/compression-tests/results 확인 하십시오 .

테스트를 마친 브라우저는 다음과 같습니다.

/*  Browser                       DEFLATE      ZLIB     */
    XP Internet Explorer 6        PASS         FAIL
    XP Internet Explorer 7        PASS         FAIL
    XP Internet Explorer 8        PASS         FAIL
    Vista Internet Explorer 8     PASS         FAIL
    XP Firefox 3.6.*              PASS         PASS
    XP Firefox 3.5.3              PASS         PASS
    XP Firefox 3.0.14             PASS         PASS
    Win 7 Firefox 3.6.*           PASS         PASS
    Vista Firefox 3.6.*           PASS         PASS
    Vista Firefox 3.5.3           PASS         PASS
    XP Safari 3                   PASS         PASS
    XP Safari 4                   PASS         PASS     
    XP Chrome 3.0.195.27          PASS         PASS
    XP Opera 9                    PASS         PASS
    XP Opera 10                   PASS         PASS
    XP Sea Monkey 1.1.8           PASS         PASS
    Android 1.6 Browser (v4)*     N/A          N/A
    OS-X Safari 4                 PASS         PASS
    OS X Chrome 7.0.517.44        PASS         PASS
    OS X Opera 10.63              PASS         PASS
    iPhone 3.1 Safari             PASS         PASS

* Android는 HTTP 요청 헤더 "Accept-Encoding : gzip"을 보냅니다. 수축은 허용되지 않습니다.


나는 항상 원시 DEFLATE (HTTP 요청 헤더 "Accept-Encoding"에 "deflate"가 포함 된 경우)를 보낼있으며 브라우저는 인코딩 된 데이터를 올바르게 해석 할 수 있다고 결론을 내립니다 . 누군가 이것이 틀렸다는 것을 증명할 수 있습니까?

note: .NET's native implementation of DEFLATE (System.IO.Compression.DeflateStream) is raw DEFLATE. It also sucks. Please use zlib.net for all of your .NET deflating needs.


The Android 1.6 browser (v4) fails both the zlib and the deflate test on your page. I've added it to your list.


Isn't it the case that AddOutputFilterByType DEFLATE using mod_deflate sends by gzip by default?


as far as i know, yes - pretty much you "can always send raw DEFLATE and everything would be okay"... there is not "always", but most of all cases. if not, this is the browser's problem.

참고URL : https://stackoverflow.com/questions/1574168/deflate-compression-browser-compatibility-and-advantages-over-gzip

반응형