Почему 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.