2009-08-06 1 views
5

Мой сайт сжат gzipped, и он не загружается должным образом в IE. Он отлично работает в FF/Chrome, но в IE появляется только окно с запросом загрузить файл .gz, содержащий html-документ для страницы.Почему сжатие gzip с Internet Explorer не работает?

Это нормально? Должен ли я отключать gzip?

+1

Какую версию Internet Explorer? – Mez

+0

IE 7. не тестировали еще 6 или 8: – chris

ответ

16

Вы отправляете правильные заголовки?

Вам необходимо отправить хедер

Content-Encoding: gzip 

для IE, чтобы понять, что это архивированная (Firefox и др достаточно умны, чтобы обнаружить это автоматически - несмотря на то, что они не должны!)

В PHP, вы можете сделать это с помощью: -

header('Content-Encoding: gzip'); 
+3

header («Content-Encoding: gzip»); – danamlund

+0

спасибо, ребята, что было полезно – chris

+7

«Обнаружение этого автоматически» не является законным. – EricLaw

0

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

+1

Это действительный комментарий, IE6, если он видит заголовок «Vary» вместе с Content-Encoding как gzip, он не может получить полный ответ. – shivaspk

7

Одна вещь для добавления - вы должны отключить сжатие gzip для IE6 до SP2. До SP2 IE6 не всегда правильно читает и кэширует gzipped-контент, и вы получаете искаженный код.

Вы можете определить установку IE2 SP2 путем поиска «SV1» в строке пользовательского агента.

0

Проблемы с заголовками HTTP. Если у вас есть заголовок GZIP вместе с одним из следующих способов:

  • Варах
  • Transfer Encoding: Chunked

один или оба должны быть удалены.

Эта проблема чаще возникает на компьютере, на котором запущен HTTP-сервер Apache, поскольку HTTP-сервер Apache может использовать закодированную кодировку на любом виде файла. Сюда входят статические файлы, такие как файл JavaScript или файл .gif. Когда возникает проблема, описанная в этой статье, содержимое, которое хранится в кеше Internet Explorer, может быть усечено или повреждено.

Для XML, XHTML и XSLT-файлов, предотвратить парсинга как текст/HTML или текст/XSL:

RewriteCond %{HTTP_ACCEPT} text\/html [OR] 
    RewriteCond %{HTTP_ACCEPT} text\/xsl [OR] 
    RewriteCond %{HTTP_ACCEPT} gif|jpeg|png$ 
    ReWriteRule .*\.(xsl|xslt)$ - [F] 

И добавить application/xml как отображение типа контента:

AddType application/xml .xsl 

Ссылки

Смежные вопросы