Может ли XmlHttpRequest занимать больше времени в IE, чем в Chrome?
Я использую веб-приложение (которое действительно большое), поэтому есть некоторые части приложения, которые я действительно не знаю, как они работают.
Я разработчик интерфейса и я использую API REST, реализованный в .NET Web Api (насколько я знаю)
Запрос прост - я использую источник данных kendo для получения данных с сервера следующим образом
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 секунд.
Полученные данные одинаковы (вы можете увидеть размер ответа), который представляет собой массив объектов JSon (очень простой)
![enter image description here]()
Я не знаю точно, есть ли механизм кэширования в бэкэнд, но это не имеет значения, потому что я могу воспроизводить его так каждый раз (быстро в Chrome, действительно очень медленный на IE)
Любые идеи о том, что может вызвать такое поведение? Насколько я понимаю, если есть кэш или что-то в этом роде, он должен быть одинаковым для каждого браузера, так что это должно происходить как на IE, так и не только на IE - бэкэнд является агностиком браузера.
Вот дополнительная информация, которую я получил от другого запроса, чтобы проверить распределение времени в первом запросе IE
![enter image description here]()
Как вы можете видеть, самая большая часть - это "Запрос", который является временем, принятым для отправки запроса и получения первого ответа с сервера.
Спасибо в Advance
Ответы
Ответ 1
Проблема, вероятно, в Windows Authentication включена для папки, которую вы вызываете ajax из...
Здесь применяется тот же принцип...
http://docs.telerik.com/kendo-ui/web/upload/troubleshooting
Проблема. Асинхронная загрузка случайно сбой при использовании IE10/11 с проверкой подлинности Windows
Загрузка либо зависает бесконечно, либо истекает, если в HTTP POST получен запрос 401.
Решение
Для IE10 см. KB2980019
Официальное исправление для IE 11 от 6 ноября 2014. См. идентификатор ошибки 819941