сафари и гзип - PullRequest
       15

сафари и гзип

9 голосов
/ 05 августа 2009

Я загружаю jQuery из Google на моем сайте (http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js), который заминирован и gzip'd. В Firefox файл jquery отображается как запрос 19k, но Safari показывает его как запрос 56k. I Я предполагаю, что Safari не принимает его как файл gzip. В чем дело? Это исходит от Google, и я уверен, что это должен быть gzip'd

Ответы [ 5 ]

13 голосов
/ 06 декабря 2009

Я нашел это: вы НЕ МОЖЕТЕ использовать расширение '.gz' при подаче сжатых файлов CSS или JS в Safari. Он знает, как обрабатывать сжатые файлы, если у них нет расширения .gz (это просто странно:)

Вот как я подаю сжатые файлы JS / CSS в Safari:

  • используйте любое другое расширение, только не «.gz» («.jgz», «.foo» или любое другое)
  • установить заголовок в кодировке gzip для выбранных вами расширений ('Content-encoding: gzip')
  • установить соответствующий тип MIME: текст / JavaScript или текст / CSS

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

Я успешно протестировал это с Safari 4.0.4 в Windows XP SP3 . И Chrome 4, FF 3.5.5, IE8 и Opera 10.10 на winxp для кросс-браузерной совместимости.

7 голосов
/ 05 августа 2009

Возможно, стоит взглянуть на эту ссылку .

После некоторых копаний я узнал, что вы не можете отправлять сжатые javascript-коды в Safari с расширением «gz». Это должно быть «jgz»

Так что, похоже, проблема в том, что Google подает его как "gz", а не "jgz", как этого хочет Safari.

4 голосов
/ 03 июня 2010

Просто подумал, что добавлю это на случай, если люди столкнутся с одним и тем же вопросом. После дополнительной игры с инструментами Dev и просмотра заголовков ответов я заметил, что Content-Length на самом деле показывает правильный размер gzip. Тогда я могу только предположить, что он действительно получает правильную сжатую версию, но в главном окне ресурсов он отображает несжатый размер, а заголовки показывают сжатый размер.

1 голос
/ 05 августа 2009

вижу как минимум две возможности:

  • возможно, safari не отправляет заголовок HTTP, который указывает «я могу получить gzip»; этот заголовок Accept-Encoding, и его значение обычно compress, gzip
  • может, Safari указывает размер несжатых данных?

Есть ли у вас какой-то "сетевой анализатор", такой как wireshark (кажется, есть версия для MacOS) , чтобы реально увидеть, что происходит в сети?

0 голосов
/ 21 февраля 2014

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...