XmlHttpRequest 在 IE 中是不是比在 Chrome 中花费更多时间?

Posted

技术标签:

【中文标题】XmlHttpRequest 在 IE 中是不是比在 Chrome 中花费更多时间?【英文标题】:Can a XmlHttpRequest take more time in IE than in Chrome?XmlHttpRequest 在 IE 中是否比在 Chrome 中花费更多时间? 【发布时间】:2015-08-23 10:42:09 【问题描述】:

我正在使用一个 Web 应用程序(它真的很大),所以应用程序的某些部分我真的不知道它们是如何工作的。

我是一名前端开发人员,我正在使用一个用 .NET Web Api 实现的 REST API(据我所知)

请求很简单——我使用 kendo Datasource 像这样从服务器获取数据

var kendoDataSource = new kendo.data.DataSource(
                    // fake transport with local data
                    transport: 
                        read: function(options) 
                            // set results
                            options.success(lookupValues);
                        
                    ,
                    schema: 
                        parse: function (response) 
                            // sort case insensitive by name
                            response.sort(function (a, b) 
                                return (a.Name.toLowerCase() > b.Name.toLowerCase()) ? 1 : (a.Name.toLowerCase() < b.Name.toLowerCase()) ? -1 : 0;
                            );
                            return response;
                        
                    ,
                    // set the page size
                    pageSize: 25
                );

以及对数据的请求

$http( method: 'GET', url: 'REST/SystemDataSet/' + id + '/Values' ).success(function (response) 
                            // store data
                            lookupValues = response;
                            kendoDataSource.read();
// do some logic here
                        ).error(function(error) 
                            // logic
                        );

我这样做是因为有一些额外的逻辑来操作数据。

Chrome 中的这个请求大约需要 32 毫秒,而 IE 中则需要将近 9 秒。 取回的数据是一样的(可以看Size of response),都是一个JSon对象数组(很简单)

我不知道后端是否有缓存机制,但这没关系,因为我每次都能像这样重现它(在 Chrome 中很快,在 IE 中真的很慢)

关于什么可能导致这种行为的任何想法?据我了解,如果有缓存或其他东西,每个浏览器都应该是相同的,所以这应该发生在两者上,而不仅仅是在 IE 上 - 后端与浏览器无关。

这是我从另一个请求中获得的一些额外信息,用于检查第一个 IE 请求中的时间分布

如您所见,最大的部分是“请求”,即发送请求和接收来自服务器的第一个响应所用的时间。

提前致谢

【问题讨论】:

能否提供在线演示以供直接访问?我在 Internet Explorer 团队工作,很想进一步研究。 我很乐意为您提供帮助,但我无法为您提供访问权限。问题在于:1-客户是一家大(非常大)公司,2-有代码保密协议,最重要的是3-我是离岸开发人员,也就是说我不是真的在公司所在的国家。我是为他们工作的众多开发人员之一。我想问老板这件事,但我的工作有风险,因为这个:/我不知道会发生什么,而且很难冒这个风险。我想我可以提供信息或代码片段,但它真的很大 我看到了完全相同的问题——只是我们没有使用 KendoUI。你有进步吗?如果有请分享。在 IE (10/11/Edge) 中看到 GET 请求最多需要 20 秒,在 Chrome/firefox 中需要 50 毫秒 不,这里根本没有进展。我们将此项目设置为阻止,并继续处理其他事情 我也看到了完全相同的问题,并且也在使用 KendoUI。如果有人有解决方案,请更新。 【参考方案1】:

问题可能是为您调用 ajax 的文件夹打开了 Windows 身份验证... 同样的原则也适用于这里......

http://docs.telerik.com/kendo-ui/web/upload/troubleshooting

问题:使用带有 Windows 身份验证的 IE10/11 时,异步上传随机失败 如果在 HTTP POST 上收到 401 质询,则上传会无限期冻结或超时。

解决方案

对于 IE10,请参阅KB2980019

截至 2014 年 11 月 6 日,没有针对 IE 11 的官方修复。请参阅错误 ID 819941

【讨论】:

我们现在正在使用 IE 11 进行测试,所以我想到目前为止我们还没有解决方案。谢谢,这很有用。我们需要检查以前版本的 IE 是否发生同样的问题,我们还没有检查过

以上是关于XmlHttpRequest 在 IE 中是不是比在 Chrome 中花费更多时间?的主要内容,如果未能解决你的问题,请参考以下文章

XmlHttpRequest 状态 0 而不是 IE 10 中的 401

IE 中的 XMLHttpRequest.responseURL

IE 11、XMLHttpRequest、xhr.upload 未在 Webworker 中设置

IE 11 错误 - 访问被拒绝 - XMLHttpRequest

在 IE XMLHttpRequest 中读取文件:// URL

详解AJAX核心中的XMLHttpRequest对象