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{ ...
Ответы
Ответ 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