-
XMLHttpRequest su chromium vs. firefoxScritto daaltgutente che non utieneil 2014-11-12 12:29:37.0 alle 2014-11-12 12:29:37.0Trollate totali: 11540Non capisco una cosa, e non trovo nulla di chiaro su internet in proposito. Mi sembra strano che nessuno l'abbia notato, quindi sospetto di star facendo qualcosa di sbagliato io, perche` la differenza sui due browsers e` rilevante. In pratica, ho un problema nel compilatore Lino4: il caricamento di librerie, quando il compilatore trova una "include", viene fatto con una richiesta XMLHttp sincrona (non asincrona) dal worker del compilatore. Ok, e` sincrona e quindi bloccante, pero` ovviamente avviene in un worker e non nel thread principale a cui e` legato il DOM e la UI del browser, sicche` dovrebbe essere funzionalmente accettabile per l'utente che non si vede bloccare il browser mentre compila. Infatti non si blocca nulla, pero` c'e` un delay molto alto fra una richiesta e l'altra, oppure le richieste sono lentissime su chromium (o meglio, su entrambi i suoi derivati Chrome e Opera), mentre Firefox fa richieste praticamente istantanee. Ovviamente il mio problema e` che mentre FF compila in una frazione di secondo i semplici listati su cui lavoro ora, Opera e Chrome ci mettono qualcosa come 3 secondi, dando l'impressione che sia il compilatore stesso ad essere lento quando il 99% del tempo e` speso nelle richieste per caricare le librerie. Allego screenshot del profiler:

Qualche idea sul perche`? sembra quasi che i delay siano introdotti ad arte, quasi tutti intorno ai 300 ms, forse una caratteristica del browser per non sovraccaricare i server ed evitare DoS involontari? (pero` mi parrebbe strano che non la disabilitassero per richieste che puntano a localhost)
Allego anche il codice del requester del compilatore: magari e` li` che sbaglio...Requester = function (args) { this.url = args && typeof args.url == 'string' ? args.url : 'http://localhost:4048'; this.requester = new XMLHttpRequest (); this.requestInProgress = false; this.onload = function () { }; this.onerror = function () { }; return this; }; Requester.prototype.get = function (args) { var async = args && typeof args.async == 'boolean' ? args.async : true, binary = args && typeof args.binary == 'boolean' ? args.binary : false; if (this.requester && this.requestInProgress == false) { this.onload = args && typeof args.onload == 'function' ? args.onload : function () { }; this.onerror = args && typeof args.onerror == 'function' ? args.onerror : function () { }; this.requester.open ('GET', this.url + (args && typeof args.uri == 'string' ? args.uri : empty), async); if (binary) this.requester.overrideMimeType ('text/plain; charset=x-user-defined'); if (async) { this.requestInProgress = true; this.requester.onreadystatechange = this.rscHandler.bind (this); this.requester.send (); return null; } this.requester.send (); return this.requester.status == 200 ? { status: this.requester.status, response: this.requester.response, text: this.requester.responseText, xml: this.requester.responseXML } : { status: this.requester.status, response: null, text: empty, xml: null }; } }; Requester.prototype.rscHandler = function () { if (this.requester.readyState == 4) { this.requestInProgress = false; if (this.requester.status == 200) { this.onload ({ status: this.requester.status, response: this.requester.response, text: this.requester.responseText, xml: this.requester.responseXML }); return; } this.onerror ({ status: this.requester.status, response: null, text: empty, xml: null }); } };
ho tralasciato il metodo "post" perche` tanto il problema affligge soprattutto le richieste GET, che sono di piu`. E` vero che nel codice c'e` un flag "requestInProgress" che protegge un'istanza del requester dall'eseguire piu` di una richiesta per volta, ma c'era piu` per sicurezza che per motivi pratici, tanto poi ogni richiesta crea una nuova istanza con la sua copia del flag.
Non capisco.
-
-
Re: XMLHttpRequest su chromium vs. firefoxScritto daaltgutente che non utieneil 2014-11-12 12:41:26.0 alle 2014-11-12 12:41:26.0Trollate totali: 11540> Prendi me, e capirai tutto.
Ma vuoi mettere col betotal?
-
-
Re: XMLHttpRequest su chromium vs. firefoxScritto daaltgutente che non utieneil 2014-11-12 12:54:36.0 alle 2014-11-12 12:54:36.0Trollate totali: 11540> Vinco io.
Non avrai altro farmaco all'infuori di BeTotal.
Vuolsi cosi` cola` dove si puote cio` che si vuole, e piu` non rompere.
-
-
-
-
Re: XMLHttpRequest su chromium vs. firefoxScritto da: altg
> Allego screenshot del profiler:
>
>
Non capisco, ma il delay e' tra la request e la response ? Se la risposta e' si, allora non e' un problema del browser, ma del server.
Edit: Riletto il messaggio, Chromium/FireFox, come non detto
...
Edit 2: E se provi ad utilizzare jQuery ? Magari c'e' un flag da qualche parte che ...
**Modificato dall'autore il 12.11.2014 13:08**`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: XMLHttpRequest su chromium vs. firefoxScritto daaltgutente che non utieneil 2014-11-12 13:54:06.0 alle 2014-11-12 13:54:06.0Trollate totali: 11540> > Allego screenshot del profiler:
> >
> >
>
> Non capisco, ma il delay e' tra la request e la response ? Se la risposta e' si, allora non e' un problema del browser, ma del server.
>
> Edit: Riletto il messaggio, Chromium/FireFox, come non detto
...
Gia`, anch'io sono perplesso perche` appunto il server e` lo stesso, e il codice js e` lo stesso in tutti e due i casi, solo che i derivati di chromium laggano, e firefox no.
> Edit 2: E se provi ad utilizzare jQuery ? Magari c'e' un flag da qualche parte che ...
Boh. Magari provo, cosi` se lagga lo stesso, escludo che il problema sia nel mio requester.
-
-
Re: XMLHttpRequest su chromium vs. firefoxma la compilazione avviene server-side? se sì a che ti serve un web worker?Young professional woman and busy mom.
-
Re: XMLHttpRequest su chromium vs. firefoxScritto daaltgutente che non utieneil 2014-11-12 14:50:57.0 alle 2014-11-12 14:50:57.0Trollate totali: 11540> ma la compilazione avviene server-side? se sì a che ti serve un web worker?
No no, avviene client-side, e` quello il punto per il worker.
Il server linka l'eseguibile, e serve le librerie e i sorgenti.
Insomma il server opera coi files, ma il 99% del lavoro lo fa il client.-
Re: XMLHttpRequest su chromium vs. firefoxScritto da: altg
> > ma la compilazione avviene server-side? se sì a che ti serve un web worker?
>
> No no, avviene client-side, e` quello il punto per il worker.
> Il server linka l'eseguibile, e serve le librerie e i sorgenti.
> Insomma il server opera coi files, ma il 99% del lavoro lo fa il client.
Perché non può fare tutto il client?Young professional woman and busy mom.-
Re: XMLHttpRequest su chromium vs. firefoxScritto daavvelentaniCubicolarioil 2014-11-12 15:02:12.0 alle 2014-11-12 15:02:12.0Trollate totali: 18184Scritto da: ::1
> Scritto da: altg
> > > ma la compilazione avviene server-side? se sì a che ti serve un web worker?
> >
> > No no, avviene client-side, e` quello il punto per il worker.
> > Il server linka l'eseguibile, e serve le librerie e i sorgenti.
> > Insomma il server opera coi files, ma il 99% del lavoro lo fa il client.
>
> Perché non può fare tutto il client?
Javascript non puo` scrivere su disco ne' eseguire programmi locali, presumo sia per questo.I think happiness is love
- Vladimir Putin-
Re: XMLHttpRequest su chromium vs. firefoxScritto daaltgutente che non utieneil 2014-11-12 15:27:17.0 alle 2014-11-12 15:27:17.0Trollate totali: 11540> > > > ma la compilazione avviene server-side? se sì a che ti serve un web worker?
> > >
> > > No no, avviene client-side, e` quello il punto per il worker.
> > > Il server linka l'eseguibile, e serve le librerie e i sorgenti.
> > > Insomma il server opera coi files, ma il 99% del lavoro lo fa il client.
> >
> > Perché non può fare tutto il client?
>
> Javascript non puo` scrivere su disco ne' eseguire programmi locali, presumo sia per questo.
Già. Magari poi esistono soluzioni acrobatiche specifiche di un browser, ma non è quello il punto. Su un forum una volta avevo letto che c'era un limite di due request contemporanee per dominio, e che una soluzione sarebbe usare più domini, ma boh... Come si creano degli alias di localhost? E poi c'è il fatto che con FF funziona perfettamente. È strano.
-
-
-
Re: XMLHttpRequest su chromium vs. firefoxScritto daNon Autenticatoil 2014-11-12 15:44:34.0 alle 2014-11-12 15:44:34.0Scritto da: altg
> > ma la compilazione avviene server-side? se sì a che ti serve un web worker?
>
> No no, avviene client-side, e` quello il punto per il worker.
> Il server linka l'eseguibile, e serve le librerie e i sorgenti.
> Insomma il server opera coi files, ma il 99% del lavoro lo fa il client.
Ma perchè... perchè!?
-
-
-