我有一个角色素材SPA网站,在Chrome,Firefox和Edge中表现非常出色,但它在IE11中大幅落后。
我知道IE11中动画和样式的角度材质问题,并进行了一些更改以改善该区域的一般性能(禁用动画,甚至删除主题等等。)
但是,即使这稍微改善了应用程序,我仍然可以在加载资源时看到一个大的滞后,每个请求花费很长时间(非常长的时间)来处理。我检查了服务器,响应总是在毫秒范围内(就像在Chrome中一样),但它在IE11中需要永远。
请检查IE11的加载网络时间。
vs Chrome。
可能导致这种情况的任何想法?
干杯,
答案 0 :(得分:0)
我在IE中遇到了与AngularJS类似的问题 我们已将问题跟踪到IE的安全更新(KB2962872)。 卸载该补丁可使性能恢复正常。
答案 1 :(得分:0)
您可能调查XMLHttpRequest被拦截。尽管现代浏览器对此的性能影响较小,但IE与JS函数交换本机调用会在一定程度上影响其使用范围。这适用于各种polyfill和扩展功能。
答案 2 :(得分:0)
根据您的屏幕截图,“ CORS Preflight”请求似乎有一个瓶颈……。也许https://developer.akamai.com/blog/2015/08/17/performance-single-page-apps会为您说明可行的解决方法。
此外,我将研究为什么您的应用程序发出大量的OPTION请求,除非有此意图,否则您的应用程序会进行多次往返,每一次都会延迟一次往返,并且并发连接受到限制,最终您会消耗合并并阻止其他请求...
通过IE的“网络”标签查看网络上正在发生的事情会很有趣...
答案 3 :(得分:0)
这似乎是XMLHttpRequest
正在排队,然后成批执行,实际上使每个请求都停滞不前,直到某个内部进程一次将它们全部发送出去。
我首先要研究的是IE对于一次允许的并发XMLHttpRequest
和浏览器请求有内部限制(记录不充分)。在较早的版本中,该值为2,但在IE8周围增加到6,具体取决于有关IE认为您网络的速度的一些糟糕且不可靠的内部指标。 IE11仍然可以这样做,但是有更高的限制。
我的猜测是您已达到此限制,一旦达到此限制,在将IE发送给服务器之前,管理IE中批次的内部计时器检查将花费1-2s。
要检验此假设,请执行以下操作:在IE11中,在发送每个请求之前,只需添加100ms等待(它只需要足以限制并行请求的数量)即可。仍然会很慢,但是如果内部批处理是原因,您将不会在请求的块中看到1-2s的延迟。
如果这是问题所在,则解决方法可能是分批尝试尝试避免达到IE的上限,但是由于这是动态的,我怀疑这对<1.5%的用户而言将是不成比例的痛苦。
答案 4 :(得分:0)
我会将REAL OS调试器附加到浏览器,然后尝试确定IE是否实际上正在分离线程来执行XHR。 这是一项艰巨的调查,但可以解释很多问题。
大多数浏览器都执行然后将回调和数据封送回MAIN UI THREAD。 但是IE较旧,我不知道它的作用。
另一个想法。 我们行动缓慢的LARGE公司最终放弃了对IE的支持,这使我们能够编写具有体面代码的承诺而无需使用polyfill。 我们的代码库正在慢慢清理随着时间的推移而获得的其他奇怪的polyfill。 在最长的时间内,我们无法写出(var key in something),因为列表中会出现一个polylfill。
您可能会考虑与客户进行讨论。 它以“ Edge或Firefox怎么样”开头 您可以谈论其他事情被取代。 您刷新手机和笔记本电脑...浏览器如何...
祝你好运。
答案 5 :(得分:0)
Chrome中的5-6毫秒时间似乎太短,无法进行实际的服务器调用。如果我们在两个屏幕快照中都看到了相同的网络调用(目前尚不清楚),那么Chrome很有可能正在使用缓存响应,而IE正在进行网络调用。请检查您的缓存标题,并确保您使用的是IE可以理解的标题。
答案 6 :(得分:0)
此问题起源于Internet Explorer浏览器对AJAX请求的配置。
执行以下本地更改:
进行如下本地政策更改:
导航到Windows组件> Internet Explorer>安全功能> AJAX 启用“允许本机XMLHTTP支持”。 将“每个主机的最大连接数(HTTP1.1)”更改为16。 将“每个服务器的最大连接数(HTTP1.0)”更改为16。
除此之外,大多数公司都放弃了对IE的支持。没有人愿意为没人使用的东西编写polyfill,为什么要使用IE?请回复我想知道的内容。
答案 7 :(得分:0)
您可以使用Microsoft ETL日志来更深入地跟踪HTTP网络
创建文件夹C:\ msfiles
打开一个管理员提升的cmd
发出命令netsh trace start InternetClient_dbg capture =是maxsize = 450 filemode =循环持久=是覆盖=是traceFile = C:\ msfiles \ Etl_trace.etl
执行所需的操作,这是实际的网络问题
使用命令netsh trace stop停止跟踪
->您现在有了Etl_trace.etl
使用IE一次,使用Chrome一次 并比较日志...