Why does Safari not accept GZIP compression?

前端 未结 3 1833
孤独总比滥情好
孤独总比滥情好 2021-01-18 13:50

I have a pretty big JavaScript file here which I want to embed into my website. The HTTP server is smart enough to GZIP the file before delivering it to the browser.

相关标签:
3条回答
  • 2021-01-18 13:53

    This is a while ago but I just came across a very similar issue or maybe the source of this issue. When you compress data with gzip for safari like this:

    gzip jquery.min.js
    

    You will end up with a jquery.min.js.gz which will fail in Safari even when correctly specified as gzip encoded file stream and also when renamed to jquery.jgz as mentioned in a lot of other threads about this issue. This seems to be because the filename is encoded in the gzip file.

    If you encode a gzip file like this:

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

    Then you will have a file that is a few bytes smaller and does work flawlessly with Safari.

    0 讨论(0)
  • 2021-01-18 14:13

    I've run into this problem as well, while trying to optimize the load time of a website on iOS7 Safari mobile iPad.

    • Encoded = uncompressed filesize, from server
    • Decoded = uncompressed filesize, locally
    • Transferred = uncompressed file size + headers sent and received
    • Content-Length = compressed file sent, from server

    Safari chose a really weird way of representing these numbers in their debugger.

    0 讨论(0)
  • The HTTP headers sent to Safari say it's compressed (It has the Content-Encoding: gzip header, and it says the Content-Length is 119406 bytes) - I'd trust those more than the bold number saying 430.61 in Web Inspector. How it determines both those numbers in the top column, , I don't know.

    You can get verification on how many bytes is going over the wire if you sniff the HTTP request with wireshark.

    0 讨论(0)
提交回复
热议问题