JQuery ajax размещение больших данных медленнее в Chrome и Safari - программирование
Подтвердить что ты не робот

JQuery ajax размещение больших данных медленнее в Chrome и Safari

Мне нужно сделать тест пропускной способности с javascript и php, я использую jQuery и пробую все браузеры, но:

  • Firefox - UP: 7-8 Мбит/с
  • Explorer 9 - UP: 7-8 Мбит/с
  • Opera - UP: 7-8 Мбит/с
  • Safari - UP: иногда 800-900 kbps
  • Chrome - UP: 100-200 кбит/с или без данных

Есть ли у вас идея увеличить производительность этих браузеров или других хороших технологий для измерения скорости?

sendFile: function (s, d, m){ // size, data, metric
    m++; // how many times I tried to post data
    console.log('m: '+m);
    time = new Date(); 
    endTime3=time.getTime(); // execute time start
    if(s<=65536){
        $.ajax({
            type : 'POST',
            url : '/vegpont/savszelesseg/',
            timeout: 30000,
            dataType: 'text',
            cache: false,
            data: {
                index : 3,
                text: d // large data, min 512 KB to 
            },
            success : function(data){
                console.log('kB: '+s);
                time = new Date(); 
                endTime4=time.getTime(); // execute time end
                console.log('sec: '+(endTime4-endTime3)/1000);
                if(((endTime4-endTime3)/1000)<sec){ // sec now equals 4
                    speedTest.createFile(s*2, m); // create a data which is 's' (aka size) large then call this sendfile method
                }else{
                    var delta=(endTime4-endTime3)/1000;
                    var res=Math.round(s/delta);
                    $('div#speedResult3').html('<b>UP:</b><br/>kB: '+s+', '+
                    'sec: '+delta+'<br/>' +
                    '<b>~ '+res*8+' kbps</b>');
                    $('div#speedResult3').slideDown(1000);
                    $('div.buttonContainer').unblock();
                }

            },
            error : function(XMLHttpRequest, textStatus, errorThrown) {
                if(textStatus=='timeout'){
                    if(m>10){
                        $('div#speedResult3').html('<b>UP:</b><br/>sikertelen mérés');
                        $('div#speedResult3').slideDown(1000);
                        $('div.buttonContainer').unblock();
                    }
                    else{
                        speedTest.createFile(s, m); // create a data which is 's' (aka size) large then call this sendfile method
                    }
                }
            }
        });
    }else{ ...
4b9b3361

Ответ 1

Из моего личного опыта JQuery (и большинство веб-китов) раздуты и вызывают множество проблем, потому что они больше заботятся о том, чтобы повторно изобрести колесо, чтобы создать свою собственную версию функциональности Crossbrowser, чем обеспечить оптимизированное расширение того, что обнаружено, что они отсутствуют. Для этого есть много дополнительных накладных расходов, которые эти веб-киты (ака. Javascript api) создают по множеству причин.

Я рекомендую вам попробовать чистые javascript-вызовы AJAX для просмотра того, что такое производительность.

Ссылки, как это сделать с помощью чистого javascript:

http://www.javascriptkit.com/dhtmltutors/ajaxgetpost.shtml

http://www.openjs.com/articles/ajax_xmlhttp_using_post.php