msxml XMLHTTP для большого объекта json работает очень медленно в IE8 и довольно хорошо в Firefox - почему? - PullRequest
1 голос
/ 09 февраля 2010

Я создаю объект XMLHTTP в Firefox и IE8 и передаю очень большой объем данных (json). В Firefox это отрисовывается за 5 секунд, в IE8 это занимает 30 секунд.

Есть ли способ заставить IE8 XMLHTTP работать быстрее?

Вот мой код для создания объекта XHR:

function createRequestObject2()
{
var http_request = false;
if(window.XMLHttpRequest)
{ //: Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if(http_request.overrideMimeType)
    {
        //: set type accordingly to anticipated content type
        //http_request.overrideMimeType('text/xml');
    }
}
else if(window.ActiveXObject)
{ //: IE
    try
    {
        http_request = new ActiveXObject("Msxml2.XMLHTTP.3.0");
    }
    catch (e)
    {
         try
        {
            http_request = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e) { }
    }
}
if(!http_request)
{
    alert('Cannot create XMLHTTP instance');
    return false;
}

return http_request;
}

Вот как я использую XHR:

       http = createRequestObject2();
       http.open('GET', encodeURI(action), true);
            http.onreadystatechange = results;
            http.send(null);
            inwork = true;
            viewLoading();

            //: search results handling
            function results()
            {
                /*console.log("do_search.results[ " +
                        'Results return ' + http.readyState
                     + " ]"
                );*/
                if(http.readyState != 4)
                    return;

                inwork = false;

                if(http.status != 200)
                {
                    //setStatusLine(httpapplicant.statusText);
                    return;
                }

                //: evaluate
                var data = eval('(' + http.responseText + ')');

                //: add data to the table
                applicant_list = new dogtable(data, table1_options, $$('dog_results'));

                hideLoading();
            } //function results
...