2012-09-11 2 views
6

여기에 내 웹 사이트에 포함하려는 JavaScript 파일이 있습니다. HTTP 서버는 파일을 브라우저로 전달하기 전에 파일을 GZIP하기에 충분히 똑똑합니다.Safari에서 GZIP 압축을 허용하지 않는 이유는 무엇입니까?

그러나 Chrome과 Safari로 테스트했습니다.

Chrome에서는 잘 작동합니다. 400K는 약 10 만개로 압축 아래로 이동합니다

first

second

하지만 사파리 압축에가 작동하지 않습니다

third

fourth

재미있는 일 ing는 gz2b.png에서 컨텐츠 인코딩이 "gzip"으로 설정되었음을 명확하게 볼 수 있습니다.


참고 : 이미 파일 "에 .gz"에 끝낼 수 없습니다 또는 Safari가 GZIP을 허용하지 않습니다 사파리에서 GZIP-버그에 읽어. 내 파일이 .gz로 끝나지 않으므로이 문제는 문제가되지 않습니다.

+0

사파리에있는 요청 헤더에 콘텐츠의 길이는 GZIP이고 길이는 119406 바이트라고합니다. 당신이 사용하고있는 도구가 당신에게 진실을 말하고있는 것이 확실합니까? – nos

+0

@nos 같은 도구입니다. 두 브라우저 모두에 내장 된 웹 속성을 사용하고 있습니다. – Timo

+0

@nos 당신이 옳았습니다. Wireshark는 파일이 원본 크기보다 훨씬 작음을 분명히 보여줍니다. 답변으로 의견을 게시하려면 기꺼이 "정답"으로 표시하십시오. – Timo

답변

7

Safari로 전송 된 HTTP 헤더가 압축되어 있다고 말합니다 (Content-Encoding : gzip 헤더가 있으며 Content-Length가 119406 바이트라고 말함) - 나는 굵은 글씨 이상의 내용을 말하는데 430.61 Web Inspector에서 최상위 열의 두 숫자를 모두 결정하는 방법은 모르겠습니다.

wireshark로 HTTP 요청을 스니핑하면 얼마나 많은 바이트가 전송되는지 확인할 수 있습니다.

9

iOS7 Safari 모바일 iPad에서 웹 사이트로드 시간을 최적화하는 동안이 문제도 발생했습니다. 로컬 서버

  • 디코딩 = 압축 파일 크기에서 = 압축 파일 크기 인코딩

    • ,
    • 서버로부터 파일 전송 압축 = 압축 파일 크기 + 헤더 보내고
    • 콘텐츠 길이를받은 양도

    Safari는 디버거에서이 숫자를 나타내는 정말 이상한 방법을 선택했습니다.

  • 1

    이것은 오래 전이지만 아주 비슷한 문제 또는이 문제의 출처를 발견했습니다. 이 같은 사파리 gzip을 사용하여 데이터를 압축 할 때 :

    gzip jquery.min.js 
    

    올바르게 또한 gzip으로 인코딩 된 파일 스트림으로 지정하는 경우에도 이름이 변경 될 때 사파리에 실패 이는 jquery.min.js.gz으로 종료됩니다 jquery.jgz는이 문제에 관해 많은 스레드에서 언급했습니다. 이것은 파일 이름이 gzip 파일에 인코딩되어 있기 때문인 것으로 보입니다.

    이 같은 GZIP 파일을 인코딩 할 경우

    cat jquery.min.js | gzip > jquery.jgz 
    

    그런 다음 당신은 몇 바이트가 작고, 사파리와 함께 완벽하게 작동 않는 파일이됩니다.

    관련 문제