Почему Safari не принимает сжатие GZIP?

У меня есть довольно большой файл JavaScript, который я хочу встроить в мой сайт. HTTP-сервер достаточно умен, чтобы GZIP файл перед его доставкой в браузер.

тем не менее, я тестировал с Google Chrome и Safari.

на Chrome, он работает очень хорошо. 400K идут вниз обжатые к вокруг 100k:

но при сжатии Safari нет работа:

самое смешное, в gz2b.png вы можете ясно видеть, что кодировка контента установлена в "gzip".


Примечание: я уже читал об ошибке GZIP в Safari, где файлы не могут заканчиваться".ГЗ" или "сафари" не будет принимать файлы в формате gzip. Поскольку мой файл не заканчивается .gz эта проблема не должна быть проблемой.

3 ответов


заголовки HTTP, отправленные в Safari, говорят, что он сжат (у него есть заголовок Content-Encoding: gzip, и он говорит, что длина контента составляет 119406 байт) - я бы доверял тем, кто больше, чем полужирный номер, говорящий 430.61 в веб-инспектор. Как он определяет оба эти числа в верхнем столбце, я не знаю.

вы можете получить проверку на сколько байтов идет по проводу, если вы нюхаете HTTP-запрос с wireshark.


Я столкнулся с этой проблемой, а также, пытаясь оптимизировать время загрузки веб-сайта на iOS7 Safari mobile iPad.

  • Encoded = несжатый размер файла, с сервера
  • Decoded = несжатый размер файла, локально
  • Transferred = размер несжатого файла + заголовки отправлены и получены
  • Content-Length = сжатый файл отправлен с сервера

Safari выбрал действительно странный способ представления этих чисел в своих отладчик.


это некоторое время назад, но я только что столкнулся с очень похожей проблемой или, возможно, источником этой проблемы. Когда вы сжимаете данные с помощью gzip для safari, как это:

gzip jquery.min.js

вы получите jquery.минута.js.gz, который потерпит неудачу в Safari, даже если правильно указан как поток файлов в кодировке gzip, а также при переименовании в jquery.jgz, как упоминалось во многих других потоках об этой проблеме. Кажется, это связано с тем, что имя файла закодировано в файле gzip.

Если вы Закодируйте файл gzip следующим образом:

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

тогда у вас будет файл, который на несколько байтов меньше и работает безупречно с Safari.