Kiek vienu metu AJAX užklausų (XmlHttpRequest) leidžiama populiariose naršyklėse?

„Firefox 3“ atsakymas į 6 domeną yra toks: kaip tik tada, kai bus paleistas 7-asis XmlHttpRequest (bet kuriame skirtuko lape) toje pačioje srityje, jis įkeliamas į eilę, kol baigiamas vienas iš likusių 6.

Kokie yra kitų pagrindinių naršyklių numeriai?

Taip pat yra būdų, kaip apriboti šiuos apribojimus, jei mano vartotojai nepakeičia naršyklės nustatymų? Pvz., Ar yra kokių nors apribojimų dėl „jsonp“ užklausų skaičiaus (naudojančio <tag> w370>, o ne „XmlHttpRequest“ objektą)?

Pagrindinė informacija. Mano vartotojai gali padaryti XmlHttpRequests iš tinklalapio serveryje, prašydami serverio atlikti ssh komandas nuotoliniuose kompiuteriuose. Jei praleidžiami nuotoliniai kompiuteriai, komanda „ssh“ trunka kelias minutes, kad nepavyktų, galiausiai neleidžiant naudotojams paleisti jokių papildomų komandų.

333
18 февр. Michael Gundlach nustatė vasario 18 d 2009-02-18 16:28 '09 16:28 2009-02-18 16:28
@ 8 atsakymai

Vienas triukas, kurį galite naudoti norėdami padidinti lygiagrečių jungčių skaičių, yra patalpinti vaizdus iš kito subdomeno. Jie bus tvarkomi kaip atskiri prašymai, kurių kiekvienas bus apribotas vienu metu.

IE6, IE7 turi dvi ribas. IE8 - 6, jei turite plačiajuostį ryšį - 2 (jei jis yra įdiegtas).

136
18 февр. Atsakymą pateikė Bobas vasario 18 d. 2009-02-18 16:34 '09 ne 16:34 2009-02-18 16:34

Browserscope “ tinklo rezultatai pateiks jums abu ryšius, skirtus kompiuterio vardui ir maks. populiarių naršyklių ryšiai . Duomenys renkami atliekant „laukinėje gamtoje“ naudotojo testus, kad jis neatsiliktų nuo įvykių.

border=0
101
30 авг. rugpjūčio 30 d. Kevino Hakansono atsakymas 2010-08-30 06:27 '10, 06:27 am 2010-08-30 06:27

IE6 / IE7 galite konfigūruoti tuo pačiu užklausų skaičių registre. Čia, kaip ją įdiegti keturiuose.

 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] "MaxConnectionsPerServer"=dword:00000004 "MaxConnectionsPer1_0Server"=dword:00000004 
24
23 марта '09 в 1:59 2009-03-23 01:59 atsakymą Brianegge pateikė kovo 23 d. 09 val. 1:59 2009-03-23 ​​01:59

Pasak IE 9 - Kas pasikeitė? „HttpWatch“ tinklaraštyje „IE9“ vis dar turi 2 ryšio ribą, kai naudojate VPN.

VPN našumo naudojimas vis dar klobininkai IE 9

Anksčiau pranešėme, kad sumažėja maksimalus vienu metu esančių ryšių skaičius IE 8, kai kompiuteris naudoja VPN ryšį. Taip atsitiko net ir tuo atveju, jei naršyklės srautas nepavyko prisijungti.

Deja, VPN ryšiai veikia IE 9 taip pat:

6
25 мая '11 в 21:55 2011-05-25 21:55 atsakė Kevin Hakanson , gegužės 25 d., 11 val., 21:55, 2011-05-25 21:55

Aš parašiau vieną AJAX testerį. Mėgaukitės !!! Tiesiog todėl, kad turėjau problemų su savo prieglobos paslaugų teikėju.

 <?php  $r = (int)$_GET['r']; $w = (int)$_GET['w']; if($r) { sleep($w); echo json_encode($_GET); die (); } //else ?><head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript"> var _settimer; var _timer; var _waiting; $(function(){ clearTable(); $('#boton').bind('click', donow); }) function donow(){ var w; var estim = 0; _waiting = $('#total')[0].value * 1; clearTable(); for(var r=1;r<=_waiting;r++){ w = Math.floor(Math.random()*6)+2; estim += w; dodebug({r:r, w:w}); $.ajax({url: '<?php echo $_SERVER['SCRIPT_NAME']; ?>', data: {r:r, w:w}, dataType: 'json', // 'html', type: 'GET', success: function(CBdata, status) { CBdebug(CBdata); } }); } doStat(estim); timer(estim+10); } function doStat(what){ $('#stat').replaceWith( '<table border="0" id="stat"><tr><td>Request Time Sum=<th>'+what+ '<td> '<td> '<td> '<td> '<td> '<td>  (seconds)</table>' ); } function timer(what){ if(what) {_timer = 0; _settimer = what;} if(_waiting==0) { $('#showTimer')[0].innerHTML = 'completed in <b>' + _timer + ' seconds</b> (aprox)'; return ; } if(_timer<_settimer){ $('#showTimer')[0].innerHTML = _timer; setTimeout("timer()",1000); _timer++; return; } $('#showTimer')[0].innerHTML = '<b>don\'t wait any more!!!</b>'; } function CBdebug(what){ _waiting--; $('#req'+what.r)[0].innerHTML = 'x'; } function dodebug(what){ var tt = '<tr><td>' + what.r + '<td>' + what.w + '<td id=req' + what.r + '> $('#debug').append(tt); } function clearTable(){ $('#debug').replaceWith('<table border="1" id="debug"><tr><td>Request #<td>Wait Time<td>Done</table>'); } </script> </head> <body> <center> <input type="button" value="start" id="boton"> <input type="text" value="80" id="total" size="2"> concurrent json requests <table id="stat"><tr><td> Elapsed Time: <span id="showTimer"></span> <table id="debug"></table> </center> </body> 

Redaguoti:
r yra eilutės trukmė ir w.
Kai pirmą kartą paspaudžiate pradžios mygtuką 80 (arba bet kurį kitą skaičių) iš lygiagrečio laikox užklausos, javascript paleidžiamas, tačiau, kaip žinote, naršyklė juos buferiuoja. Jie taip pat prašomi serveryje lygiagrečiai (tik tam tikram skaičiui, tai yra šio klausimo faktas). Čia užklausos yra išspręstos serverio pusėje atsitiktiniu vėlavimu (nustatomas w). Paleidimo metu skaičiuojamas visas laikas, reikalingas visiems „ajax“ skambučiams išspręsti. Kai bandymas bus baigtas, galite pamatyti, ar jis užtruko pusę, užėmė trečią vietą, paėmė ketvirtį ir tt Visą laiką, atimant lygiagretumą, kai skambinate serveryje. Tai nėra griežta ar tiksli, tačiau malonu matyti realiu laiku, kaip skambina „ajaxs“ (matydamas gaunamą kryžių). Ir labai paprastas atskiras scenarijus, rodantis ajax pagrindus.
Žinoma, tai reiškia, kad serverio pusėje nėra jokių papildomų apribojimų.
Pageidautina naudoti kartu su „Firebug“ tinklo skydeliu (arba naršyklės ekvivalentu)

6
13 апр. Atsakymas, kurį pateikė Luis Siquot Bal 13 2011-04-13 01:42 '11 prie 1:42 2011-04-13 01:42

Aš tiesiog patikrinau www.browserscope.org , o su IE9 ir „Chrome 24“ galite turėti 6 vienalaikius ryšius su vienu domenu ir iki 17 iki kelių.

6
29 янв. Atsakymas pateikiamas xmorera sausio 29 d 2013-01-29 16:20 '13, 16:20, 2013-01-29 16:20

Parašė savo bandymą. patikrintas kodas stackoverflow, puikiai veikia, sako chromo / FF gali padaryti 6

 var change = 0; var simultanius = 0; var que = 20; // number of tests Array(que).join(0).split(0).forEach(function(a,i){ var xhr = new XMLHttpRequest; xhr.open("GET", "/?"+i); // cacheBust xhr.onreadystatechange = function() { if(xhr.readyState == 2){ change++; simultanius = Math.max(simultanius, change); } if(xhr.readyState == 4){ change--; que--; if(!que){ console.log(simultanius); } } }; xhr.send(); }); 

ji veikia daugeliui svetainių, kurios gali paskatinti perskaičiuoti pakeitimo įvykį skirtingu laiku. (dar žinomas kaip: paraudimas)

Mano node.js serveryje pastebėjau, kad norėjau paleisti įvykį / blykstę reikėjo išleisti bent 1025 baitus. kitaip įvykiai tiesiog sukels visas tris valstybes vienu metu, kai prašymas bus baigtas, čia yra mano backend:

 var app = require('express')(); app.get("/", function(req,res) { res.write(Array(1025).join("a")); setTimeout(function() { res.end("a"); },500); }); app.listen(80); 

Atnaujinti

Pastebėjau, kad dabar jūs galite turėti užklausą iki 2x, jei naudojate xhr ir tuo pačiu metu parsisiunčiate api.

3
28 февр. Atsakymas pateikiamas Endless 28 Feb. 2014-02-28 23:25 '14, 23:25 2014-02-28 23:25

Manau, kad yra maksimalus vienu metu HTTP užklausų, kurias naršyklės atliks tame pačiame domene, kuris yra 4-8 užklausų, priklausomai nuo vartotojo nustatymų ir naršyklės, skaičiaus.

Galite pritaikyti savo užklausas eiti į skirtingus domenus, kurie gali arba negali būti vykdomi. „Yahoo“ vaikinai šioje srityje atliko daug tyrimų, kuriuos galite skaityti ( čia ). Atminkite, kad kiekvienam pridėtam naujam domenui taip pat reikia DNS paieškos. YSlow vaikinai rekomenduoja nuo 2 iki 4 domenų, kad būtų pasiektas geras kompromisas tarp lygiagrečių užklausų ir DNS paieškos, nors tai susiję su puslapio įkėlimo trukme, o ne tolesniais AJAX prašymais.

Ar galiu paklausti, kodėl norite pateikti tiek daug prašymų? Yra gerų priežasčių, kodėl naršyklės apriboja to paties domeno užklausų skaičių. Jei įmanoma, jums bus lengviau susieti užklausas.

0
18 февр. atsakymas pateikiamas 18 val. 2009-02-18 16:37 '09 16:37 2009-02-18 16:37

Kiti klausimai apie etiketes arba Užduoti klausimą