Зачем больше использовать X-UA-совместимый IE = Edge?

95

В последнее время я прошел несколько онлайн-курсов, и я все еще вижу, как некоторые преподаватели по умолчанию добавляют следующий метатег вверху своих документов:

<meta http-equiv="X-UA-Compatible" content="IE=edge">

Думаю, что это так же важно и полезно, как <meta charset="UTF-8">.

Но почему?

Согласно документации Microsoft Modern.ie, это «лучшая практика», которая «гарантирует, что Internet Explorer использует новейшее ядро». Хорошо, достаточно честно.

Однако, если вы будете следовать блок-схеме в MSDN, она ясно показывает, что документ без информации, совместимой с `X-UA-Compatible, перенаправляется в предпочтения пользователя« Просмотр совместимости », и если это не задано, просто следуйте объявлению! DOCTYPE .

Другими словами, если у пользователя нет некоторых настроек представления совместимости, IE просто будет следовать вашему! DOCTYPE и в любом случае будет использовать последний стандартный режим вашего браузера для рендеринга ... Нет необходимости в X-UA-Compatible IE=Edgeутверждении.

Как сказано в MSDN: « Используйте объявление типа документа HTML5, чтобы включить пограничный режим ».

Так при каких обстоятельствах это X-UA-Compatible IE=Edgeнужно?

Чак Ле Батт
источник

Ответы:

153

Как указывает ответ @David, если вы не размещаете сайт в зоне «Местная интрасеть», очень мало причин для включения <meta http-equiv="X-UA-Compatible" content="IE=edge">в ваши веб-страницы и (согласно рекомендациям передовой практики Microsoft ) абсолютно нет оснований включать его в HTML. (Вы должны поместить его в конфигурацию вашего сервера или заголовки сайта, а не в сам HTML.)

Если вы планируете использовать X-UA-Compatibleгде-нибудь в своем проекте, вы должны помнить, что режим совместимости влияет только на IE8, 9 и 10. Он был представлен только в IE8 и был отключен в IE11.

Также имейте в виду, что IE11 - единственная официально поддерживаемая версия IE в настоящее время . Все старые версии следует считать небезопасными.

Если этого было недостаточно, чтобы убедить вас не использовать его, учтите, что Microsoft заявляет, что IE8 и более поздние<!DOCTYPE версии уже автоматически обрабатываются в стандартном режиме, когда присутствует a , что делает это еще более бессмысленным.

Вы можете сами увидеть, как IE решает, какой режим документа использовать:

введите описание изображения здесь введите описание изображения здесь

Как видите, если X-UA-Compatibleметатег или HTTP-заголовок отсутствуют, он проверяет настройки пользователя «Просмотр совместимости». Если у пользователя нет его для вашего веб-сайта, IE проверяет наличие <!DOCTYPEобъявления. Если он находит его, он автоматически использует последнюю версию Standards Mode (также известную как «EmulateIEx»). Если этого не произойдет, он вернется в режим причуд.

Еще больше причин, почему вы не должны использовать метатег "X-UA-Compatible" от самих Microsoft (выделено мной):

Когда Internet Explorer обнаруживает мета-тег, совместимый с X-UA, он запускается заново с использованием механизма указанной версии. Это снижает производительность, потому что браузер должен остановить и перезапустить анализ содержимого.

Другими словами, это замедляет отрисовку начальной страницы.

Директива X-UA-Compatible - это инструмент, позволяющий приложениям работать в последней версии Internet Explorer, пока в приложение вносятся обновления .

Он был предназначен только для временного использования.

Лучше всего использовать заголовок HTTP, совместимый с X-UA . Добавление директивы в заголовок ответа сообщает Internet Explorer, какой механизм использовать перед началом анализа содержимого. Это должно быть настроено на сервере веб-сайта.

Другими словами, есть более эффективные способы реализации X-UA-Compatible, если вам это абсолютно необходимо.

Начиная с 12 января 2016 года техническая поддержка и обновления безопасности будут предоставляться только самой последней версии Internet Explorer, доступной для поддерживаемой операционной системы. Internet Explorer 11 - это последняя версия Internet Explorer, которая будет продолжать получать обновления безопасности, исправления совместимости и техническую поддержку для Windows 7, Windows 8.1 и Windows 10 .

IE11 - единственная официально поддерживаемая версия IE .

Единственной причиной для включения X-UA-Compatibleметатега в ваш HTML было переопределение пользовательских настроек «Просмотр совместимости» в IE8, 9 и 10 для вашего веб-сайта. Практически в каждом случае пользователь не будет изменять эти настройки (зачем им это?), И теперь эти браузеры даже больше не поддерживаются.

Короче: у этого тега был свой день.

Чак Ле Батт
источник
17
Эти блок-схемы просто фантастические.
bennettp123 04
9
Замечу, что на сегодняшний день (16.10.2015) кнопка совместимости в IE11 исчезла, но ее все еще можно включить в меню «Настройки», поэтому такая возможность существует. Мы используем его сегодня, потому что наше веб-программное обеспечение используется в корпоративных интрасетях, у которых есть устаревшие системы, для работы которых требуется режим совместимости, поэтому мы должны обойти это. Отличный совет по HTTP-заголовку, спасибо за это!
Дуг Джонсон
1
Поскольку в IE11 все еще можно включить представление совместимости, а корпоративные клиенты это делают, заголовок / тег все еще полезен. Я могу понять, почему HTTP-заголовок лучше, но если тег находится в самом начале DOM, небольшой вред будет нанесен, и только в браузерах, которые не запускались в режиме Edge. В качестве положения исключительно для случайного пользователя, застрявшего в представлении о совместимости, я не думаю, что использование тега (прямо в верхней части <head>) - плохая практика.
Tom
2
@ChuckLeButt Или их администратор сделал это «для» через групповую политику. Все еще очень важная вещь в корпоративной среде, и именно здесь для нас было самой большой победой иметь способ ее преодолеть.
Tom
2
@ChuckLeButt Я понимаю вашу точку зрения, и у меня нет возражений против windows-fu ... и все же наш клиент сказал нам, что у них IE11 в режиме совместимости по всем направлениям; как они это получили, нам не делились знаниями. Вполне возможно, что они действительно всегда были в явном списке.
Tom
18

Если пользователь просматривает страницу, расположенную в зоне «Местная интрасеть» (например, в корпоративной интрасети), «представление совместимости» включено по умолчанию. Это когда я использовал «X-UA-Compatible», чтобы заставить IE использовать последнюю версию движка.

Дэвид
источник
Да, это кажется допустимым использованием, но в этой ситуации вы, вероятно, захотите поместить его в конфигурацию сервера или в любом случае в заголовки сайта? stackoverflow.com/a/9338959/199700
Чак Ле Батт
1
Есть также изменение, частично вызванное тем, что Microsoft немного отказывается от поддержки режима совместимости. В дополнение к локальной интрасети, если в домене много поддоменов и приложений, добавление режима совместимости для поддомена теперь применяет его к ВСЕМУ домену (раньше оно применялось только к определенному поддомену). Поэтому, если у вас есть хотя бы одно приложение, которое может этого требовать, сделайте это для всех остальных, чтобы избежать проблем с поддержкой.
kilkenny
@ChuckLeButt, заголовки хороши, пока вы находитесь в сети, но если пользователь решит сохранить страницу локально, все, что у вас останется, - это встроенные <meta>теги. Вот почему обычно рекомендуется реплицировать важные заголовки в виде <meta>тегов.
ravilov
1

Пока для него установлено значение «Edge», он проверяется как HTML5, и мне сказали, что он заставляет IE повторно отображать страницу только в том случае, если сайт уже отображал ее в режиме совместимости. Тем не менее, поместить его в конфигурацию сервера ( .htaccessи т. Д.) Лучше, чем вставлять HTML-код каждой страницы.

Майкл МакГиннис
источник