Why use X-UA-Compatible IE=Edge anymore?

我最近参加了几个在线课程,我仍然看到一些导师默认在他们的文档顶部添加以下元标签:

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

人们的想法似乎是,这与 <meta charset="UTF-8">一样重要和有用。

但是为什么呢?

根据 微软的现代文档的说法,这是“最佳实践”,“确保 Internet Explorer 使用最新的引擎”。

However, if you follow MSDN 上的流程图 it clearly shows that a document without X-UA-Compatible information is forwarded to the user's "Compatibility View" preferences, and 如果 < em > that’s 未设置,那么只需按照! DOCTYPE 声明.

换句话说,除非用户有一些适当的兼容性视图设置,否则 IE will just follow your !DOCTYPE and use the latest standards mode of your browser for rendering anyway... 根本不需要 X-UA-Compatible IE=Edge语句。

正如 MSDN 所说: “ 使用 HTML5文档类型声明启用 edge 模式”。

那么在什么情况下需要 X-UA-Compatible IE=Edge呢?

94266 次浏览

如果用户正在浏览位于“ LocalIntranet”区域(例如公司 Intranet)的页面,默认情况下将打开“兼容性视图”。这是当我使用“ X-UA-Compatible”来强制 IE 使用最新的引擎。

理论上,包括 <meta http-equiv="X-UA-Compatible" content="IE=edge">迫使 IE 使用“标准模式”(相对于“怪异模式”)来显示 HTML,使其与其他现代浏览器更加内联。

然而,正如@David 的回答所指出的,除非你在“本地内联网”区域托管一个站点,否则没有什么理由把它包括在内,而且根据 微软的最佳实践建议的说法,绝对没有理由把它包括在 HTML 本身中。(您应该将其放在服务器配置或站点标题中。)

If you are considering using X-UA-Compatible anywhere in your project, you should remember that the "Compatibility View" logic which uses it is only included in IE8, IE9 and IE10. (It was only introduced in IE8 and was disabled in IE11.)

还要注意 IE11是 目前唯一官方支持的 IE 版本(EOL 支持定于2022年6月15日)。所有旧版本的 IE 应该被认为是不安全的,不应该被使用。

如果这还不足以说服你不要使用它,考虑一下微软声明的 IE8及以上版本已经 < em > 自动 在标准模式下呈现,当 <!DOCTYPE出现时,使它更加没有意义。

You can see for yourself the flow that IE takes to decide what document mode to use:

enter image description here enter image description here

如您所见,如果没有 X-UA-Compatible元标记或 HTTP 头,它将检查用户的“兼容性视图”设置。如果用户没有任何为您的网站,IE 然后检查的存在一个 <!DOCTYPE声明。如果它找到了一个,它会自动使用最新的标准模式(又名“ SimulateIEx”)。如果没有,它就会恢复到古怪模式。

更多的理由说明为什么你不应该使用微软自己的“ X-UA-Compatible”元标签(强调我的) :

When Internet Explorer encounters the X-UA-Compatible META tag it starts over using the designated version's engine. 这是一个性能的打击 because the browser must stop and restart analyzing the content.

换句话说,它减慢了初始页面渲染的速度

X-ua-Compatible 指令是一个允许应用程序在最新的 Internet Explorer 版本 同时对应用程序进行更新中工作的工具。

它只是为了临时使用而设计的。

最佳实践是 X-UA-Compatible HTTP Header 。向响应头部添加指令告诉 Internet Explorer 在开始解析内容之前使用什么引擎。这必须在网站的服务器中配置。

换句话说,如果你绝对需要的话,这里有 better ways of implementing X-UA-Compatible

从2016年1月12日开始,只有最新版本的 Internet Explorer 可用于受支持的操作系统,才会获得技术支持和安全更新。Internet Explorer 11是 Internet Explorer 的最后一个版本,并将继续在 Windows 7,Windows 8.1和 Windows 10上接收安全更新、兼容性修复和技术支持。

IE11是唯一的 官方支持的 IE 版本

在 HTML 中包含 X-UA-Compatible元标记的唯一原因是为了覆盖用户在 IE8、9和10中对网站的“兼容性视图”设置。在几乎所有情况下,用户都不会更改这些设置(为什么要更改?)而现在这些浏览器甚至不再被支持了。

简而言之: 您永远不应该包含这个标记。

只要它被设置为“ Edge”,它就会验证为 HTML5,并且我被告知,它只会导致 IE 重新呈现页面,如果站点已经在兼容模式下呈现页面的话。尽管如此,将其放入服务器配置(.htaccess等)比放入每个页面的 HTML 要好。