Откат IE7 к стандартному режиму IE6 при рендеринге CSS из кеша

У меня есть проблема, которую я не могу найти для решения...

У меня есть страница, которая отлично отображается в родном IE7 (, а не в эмулированной из IE9/IE8 )при начальной загрузке, но возвращается к стандартному режиму IE6 при последующих запросах, которые обслуживаются из кеша браузера. IE7 знает, как обрабатывать несколько классов CSS, таких как «div.class1.class2», в то время как стандартный режим IE6 не поддерживает -, поэтому моя страница разрывается при каждом посещении, кроме первого.

Вот как это воспроизвести:

  • откройте настоящий IE7 (, режим эмуляции IE7 из IE9/IE8 не будет работать!)
  • перейти к чhttp://beta.upcload.com/widget/popup?garmentId=workaholicfashion-5276777&sid=
  • при первом посещении все должно выглядеть красиво и модно (например, синяя кнопка, как в Chrome или FF)
  • перезагрузите страницу сейчас, несколько правил CSS нарушаются, потому что браузер возвращается к стандартному режиму IE6 (НЕ к причудливому режиму, я проверял! document.compatMode по-прежнему «CSS1Compat»)
  • очистите кеш и перезагрузите, все снова выглядит хорошо
  • повторяйте сколько хотите

Похоже, когда все файлы поступают с серверов Amazon, IE7 прекрасно их отображает, включая правила CSS, содержащие несколько классов. (например, "div.class1.class2" )Когда вы пытаетесь перезагрузить точно такую ​​же страницу с точно таким же кодом, она каким-то образом переключается в стандартный режим IE6 (, а не в режим Quirks ), который не не понимают связанные классы CSS и ломают несколько дизайнов, например кнопки. Я попытался добавить несколько разных заголовков Doctype/Meta, но все они не имеют значения, в настоящее время страница является действительной XHTML Strict и имеет заголовок X -UA -, совместимый с IE=edge,но по-прежнему не отображается должным образом при загрузке из кеша. Единственная разница в заголовках, которую я смог разглядеть, заключалась в отсутствующем заголовке Content -Type для запросов Not Modified, но это не должно быть проблемой, верно?

Да, и в довершение всего, когда я открываю ту же самую страницу с IE7 на моем локальном сервере разработки, она отображается просто отлично, даже после перезагрузки! :/

Обновление

Итак, я наконец смог воспроизвести это на сервере разработки. Единственное, что отличалось, это заголовок «max -age», из-за которого браузер ничего не кэшировал локально. Когда я увеличил время кеша, IE7 тоже начал кэшировать эти файлы, что снова вызвало сбой в дизайне, как только они были загружены из кеша. Таким образом, это должна быть проблема с файлами, которые обслуживаются из кеша, а не с сервера.

Обновление 2

Я сузил его до файла CSS. Кажется, что IE7 либо отображает его в режиме IE6, когда он исходит из кеша (, т.е. no Content -Введите заголовок )и в режиме IE7, когда он загружается с сервера. (Содержимое -Тип :text/css )Кто-нибудь знает, почему это так? Может быть, какие-то неправильные правила CSS? В качестве обходного пути я теперь добавляю в таблицу стилей случайный параметр для предотвращения кэширования, что не позволяет IE7 переключаться в режим IE6, но даже после удаления всех ошибок и предупреждений из таблицы стилей проблема сохраняется.

7
задан S.B. 27 July 2012 в 07:45
поделиться