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 технически медленнее, хотя на современных компьютерах разницу можно безопасно игнорировать на стороне клиента и на стороне сервера, если вы кешируете ответы (это невозможно для динамически генерируемых страниц).