Share via


Изъятие элементов из списка совместимости Internet Explorer 8

Привет, меня зовут Майкл Бенни и я работаю тестером сетевых возможностей Internet Explorer 8. В ходе разработки Internet Explorer 8 я отвечал за различные аспекты работы Compatibility View. Мы ранее обсуждали эту функцию и инструкции для владельцев сайтов, которые позволят избежать появления на сайте иконки Compatibility View. Есть еще один сценарий, о котором мы не упоминали: если сайт был добавлен посетителем в список Compatibility View до того, как он был обновлен, а теперь сайт готов для работы с IE8, как можно изъять его из этого списка, хранимого на сайте пользователя? Я хочу рассказать об одной функции, о которой мы еще не расказывали – возможности вырезать домены из пользовательского списка Compatibility View.

Краткое напоминание о том, что представляет собой режим Compatibility View: по умолчанию Interner Explorer 8 ипользует режим визуализации, который наиболее совместим с утвержденными веб-стандартами. Такая конфигурация может вызвать проблемы при работе с сайтами, ожидающими менее интероперабельного поведения от IE. Как у администратора сайта, у вас есть множество вариантов на выбор, которые позволят убедиться в том, что пользователям IE8 будет комфортно работать с сайтом – использовать ли преимущества улучшений в области поддержки стандартов в IE8, или использовать заголовок «X-UA-Compatible» с целью уведомить IE8 о том, что следует отображать содержимое так, как это бы сделал IE7. Об этом веб-мастера просили нас чаще всего.

У пользователей также есть возможность снизить число проблем с совместимостью, с которыми они могут столкнуться при обычном просмотре сайтов с отключенной опцией X-UA-Compatible. Они могут выбрать вариант просмотра сайта в режиме Compatibility View или в режиме эмуляции IE7, нажав соответствующую кнопку в адресной строке. Internet Explorer 8 запоминает нажатия кнопки Compatibility View для каждого домена, чтобы обеспечить комфортный режим при повторном посещении сайта. Эти домены находятся в реестре Windows по адресу HKCU/Software/Microsoft/Internet Explorer/Browser Emulation/.

Когда сайт находится в пользовательском списке Compatibility View, то в качестве стандартного режима визуализации будет установлен режим IE7 Emulation, что также повлияет на строку агента, используемого для запрашиваемых страниц. Как администратор вы всегда можете контролировать, как отображается ваш сайт. Используя тег X-UA-Compatible, вы можете изменить состояние режима Compatibility View у клиента и четко указывать, в каком режиме он должен отображаться. Администраторы сайта также могут развернуть использование заголовка X-UA-Compatible на большем количестве страниц, равно как HTTP-заголовок (пример – ISS и Apache). Вы также можете пойти на еще один шаг, используя заголовок X-UA-Compatible, чтобы удалить домен из пользовательского списка Compatibility View. Вот, что нужно для этого сделать...

Чтобы удалить домен из списка, пользователь должен сначала зайти на сайт, на котором используется мета-тег или заголовок X-UA-Compatible. Наличие тега IE8 <META> на самом деле запускает процесс очистки списка, но это еще не все. Следующий шаг – найти файл под названием IEStandarts.xml, находящийся в корневой папке домена. Сначала IE посылает запрос HTTP HEAD, чтобы узнать, присутствует ли этот файл в корневой папке. Его отсутствие будет означать, что сайт все еще находится в пользовательском списке. Если же заголовок HEAD вернется с успешным результатом, то IE произведет запрос HTTP GET к файлу. В самом файле присутствие тега «IE8StandartsMode» говорит о том, что данный сайт готов к удалению из списка. Вот пример правильной серверной конфигурации для сайта example.com:

  1. Установим значение заголовка X-UA-Compatible для активации режима IE8
    <meta http-equiv= «X-UA-Comapatible»> content= «IE=EmulateIE8»
  2. Разместим файл в корневой папке домена example.com
    https://example.com/iestandarts.xml
  3. Файл должен содержать корневой XML-элемент, названный IE8StandartsMode
    <IE8StandartsMode />

Администраторы сайтов должны также знать, что данный эффект также влияет и на все поддомены. Таким образом, если пользователь посетит страницу support.example.com на сайте, настроенном, как показано выше, но там будет еще один поддомен, например, mail.example.com, который все еще должен прислушиваться к пользовательскому желанию просматривать сайт в режиме Compatibility View, то поддомен mail будет использовать режим визуализации IE8.

Domain graph. There is a subdomain support.example.com which has the meta tag set to IE8, at the root there is an iestandards.xml file now if the user visits mail.example.com they will view that subdomain in IE8 standards mode.

Элементы списка Compatibility View отражают весь домен, например, example.com, а не поддомены наподобие support.example.com и mail.example.com. IE должен обрабатывать запросы на удаление из источника, который отражает весь домен, иначе можно столкнуться с побочными эффектами в отношении поддоменов. Для примера представим, что сайт example.com находится в пользовательском списке Compatibility View. Дальше с поддоменом support.example.com была проделана большая работа по обеспечению поддержки IE8, при этом используется HTTP-заголовок или метатег, указывающий, что эту часть сайта лучше всего отображать в режиме стандартов IE8. Сайты example.com и mail.example.com не были обновлены. Если бы IE принимал решение по удалению сайтов из списка совместимости Compatibility View, основываясь только на присутствии HTTP-заголовка или мета-тега на сайте support.example.com, это могло бы привести к проблемам совместимости с сайтами example.com и mail.example.com. Проверка наличия файла IEStandarts.xml в корневой папке домена решает эту проблему, требуя некоторой авторитарности для удаления элемента из списка. Таким образом, взаимодействие пользователей IE с этим сайтом будет максимально комфортным.

Получение файла IESettings.xml происходит аналогично тому, как IE запрашивает иконку сайта для доменов, но мы хотели решить проблему перегрузки серверов. Чтобы избежать многочисленных запросов от IE8 к серверу при просмотре страницы с установленным тегом X-UA-Compatible, мы активировали 30-дневный период таймаута со времени последнего обращения к сайту. Этот 30-дневный таймаут также используется, когда пользователь сам добавляет сайт в список совместимости, так что не волнуйтесь, если все еще видите запросы Compatibility View после развертывания данного файла в корневом домене.

Timeline of traffic between IE8 and the webserver which determines when IE can remove a site from the compatibility list.

Майкл Бенни (Michael Benny),

тестер Internet Explorer

Comments

  • Anonymous
    July 09, 2010
    This blog has been created to share useful information. Thanks and greetings!