DEFLATE не работает в IE9

Я разместил это в переполнении стека, но было предложено, чтобы мне повезло больше:

Раньше я не использовал deflate для кодирования веб-страниц, так что для меня это новое основание, но когда я смотрю на трафик nework в ff, мой файл all.js теперь 117 КБ из 427 КБ, так что, похоже, он работает здесь. Но нет никаких изменений в IE9. В заголовке моего ответа написано Content-Encoding: gzip в FF, но не в IE9

вот мой.htaccess:

<ifModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
</ifModule>

Заголовок запроса для all.js в IE9:

   Key  Value
Request GET /all.js HTTP/1.1
Accept  application/javascript, */*;q=0.8
Referer http://www.alexchapman.co.uk/
Accept-Language en-GB
User-Agent  Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding gzip, deflate
Host    static.alexchapman.co.uk
Connection  Keep-Alive
Cache-Control   no-cache

Заголовок ответа для all.js в IE9:

Key Value
Response    HTTP/1.1 200 OK
Date    Tue, 28 Feb 2012 15:53:41 GMT
Server  Apache/2
Last-Modified   Tue, 28 Feb 2012 15:53:40 GMT
Accept-Ranges   bytes
Cache-Control   private
Expires Fri, 02 Mar 2012 03:53:41 GMT
Keep-Alive  timeout=15, max=100
Connection  Keep-Alive
Transfer-Encoding   chunked
Content-Type    text/javascript

Заголовок запроса для all.js в Firefox:

Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-gb,en;q=0.5
Cache-Control: no-cache
Connection: keep-alive
Cookie: DELETED - this should not be sent and isnt sent with IE
Host: static.alexchapman.co.uk
Pragma: no-cache
Referer: http://www.alexchapman.co.uk/
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2

Заголовок ответа для all.js в Firefox:

Accept-Ranges: bytes
Cache-Control: private
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/javascript
Date: Tue, 28 Feb 2012 15:55:26 GMT
Expires: Fri, 02 Mar 2012 03:55:26 GMT
Keep-Alive: timeout=15, max=100
Last-Modified: Tue, 28 Feb 2012 15:55:26 GMT
Server: Apache/2
Transfer-Encoding: chunked
Vary: Accept-Encoding

Чтобы было ясно, что это происходит не только с all.js - я использовал это в качестве примера, поскольку это самый большой файл, который выиграет от сжатия. Любые предложения относительно того, что я делаю неправильно, будут высоко оценены.

**********ОБНОВИТЬ************

Мой хостинг-провайдер ответил мне и сказал, что они могут подтвердить, что gzip и deflate включены и работают на моем сайте, они сказали, что проблема с Internet Explorer специфична для этого браузера, поэтому я рекомендую попробовать режим совместимости, так как это не вызвано нашими серверами.

Я знаю представление о совместимости в IE, и это должно помочь правильно отобразить старые сайты, поэтому я не знаю, о чем они здесь, и могу подтвердить, что это не имеет никакого значения для сжатия файлов.

3 ответа

Решение

Я думаю, что я разработал, что здесь происходит. Я скачал Wireshark и проверил сетевой трафик через это. Я боролся с этим, но я думаю, что я получил это сейчас - было бы здорово, если бы кто-то мог подтвердить, что я сделал это правильно.

Рассматривая файл all.js в качестве примера, я последовал потоку tcp для запроса в Firefox и IE9. Оба сказали, что они используют шифрование gzip. Интересно, что общий размер разговора был другим. Ie9 - 268471 байт FF-120812 байт (оба меньше, чем несжатый файл).

Это примерно правильный размер файла, указанный в firebug. Но это половина размера файла, указанного в инструментах IE develolper. Таким образом, кажется, что IE не только хуже в gzip, но и инструмент разработчика неправильно сообщает, что он еще хуже, чем есть. Если кто-то может проверить этот результат или предложить объяснение, я приму его ответ.

IE9 не показывает Content-Encoding: gzip заголовок, даже если запрос сжат gzip, поэтому не доверяйте MSIE при проверке, включено ли сжатие gzip.

А также, остерегайтесь комбинации кодирования MSIE + TLS + gzip + chunked, существуют некоторые ошибки, такие как: https://support.microsoft.com/kb/871205

Сам по себе не "ответ", но mod_gzip прекрасно работает для меня (IE9 тоже). Моя конфигурация:

<IfModule gzip_module>
    mod_gzip_on Yes

    mod_gzip_item_include mime text/.*
    mod_gzip_item_include mime application/xm.*
    mod_gzip_item_include mime application/javascript
    mod_gzip_item_include mime image/svg.*

    mod_gzip_dechunk Yes
</IfModule>

Deflate и GZip - это почти одно и то же, gzip технически медленнее, хотя на современных компьютерах разницу можно безопасно игнорировать на стороне клиента и на стороне сервера, если вы кешируете ответы (это невозможно для динамически генерируемых страниц).

Другие вопросы по тегам