Ajax e Php: Chiamata asincrona troppo lenta

Salve ragazzi, in post di un po di tempo fa (non l'ho trovato più) mi ero lamentato del fatto che Ajax fosse troppo lento. Ultimamente ho dovuto riprende la situazione e mi si ripresenta il problema.

Praticamente, ogni volta che implemento "qualsiasi applicazione" ajax questa risulta troppo lenta. Ogni chiamata asincrona impiega circa 10-12 secondi, un po troppo.

Per mostrarvi il problema ho caricato un semplice esempio di ajax preso da un libro su uno spazio web che utilizzo ormai solo per fare delle prove.

http://www.volilowcostonline.com

Provate anche voi l'applicazione digitando pian piano una lettera alla volta

Fatemi sapere cosa ne pensate!

Grazie!!

inviato 6 anni fa
whitewolf11
modificato 6 anni fa
X 0 X

Il codice php?

Non credo sia un problema del codice eseguito sul client (prima però proverei a mettere un tasto "invia" invece che farlo in automatico dopo un tot di tempo) quanto più una lentezza nella comunicazione col server...

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Ciao MarioS, lo fa con qualsiasi script.... Ti va di fare una prova? Mi mandi uno script e lo carico online, ok?

risposto 6 anni fa
whitewolf11
X 0 X

Qualsiasi script php?

Se si allora prova a controllare la velocità di esecuzione dello script php.

Manda sul forum uno script di prova che vediamo come funziona da altre parti.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Online c'è uno script base, il più semplice che si possa eseguire:

File php "risposta1.php":

<?php
srand((double)microtime()*1000000);  
echo rand(0,100);
?>

File richiesta "richiesta1.js":

function getXMLHTTPRequest() {
try {
req = new XMLHttpRequest();
} catch(err1) {
  try {
  req = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (err2) {
    try {
    req = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (err3) {
      req = false;
    } 
  } 
}
return req;
}

var http = getXMLHTTPRequest();

function getServerText() {
  var myurl = '../ajax/risposta1.php';
  myRand = parseInt(Math.random()*999999999999999);
  var modurl = myurl+"?rand="+myRand; 
  http.open("GET", myurl, true);
  http.onreadystatechange = useHttpResponse;
  http.send(null);
}


function useHttpResponse() {
   if (http.readyState == 4) {
    if(http.status == 200) { 
      var mytext = http.responseText;
      document.getElementById('myElementId').innerHTML = mytext;
    }
  } else {
  document. getElementById('myElementId').innerHTML ='Caricamento..';
  }
}

Corpo della pagina:

<html>

<head>
<title></title>

<script src="../ajax/richiesta1.js" type="text/javascript"></script>

</head>

<body>

<form>
Vediamo oggi che numero ci suggerisce il server:<br>
<input type="button" value="Chiama il server" onClick="getServerText()">
</form>
<div id="myElementId"></div>

</body>

</html>

Da notare il tempo di caricamento comunque lentissimo.....

risposto 6 anni fa
whitewolf11
X 0 X

Non vedo nessun tipo di lentezza particolare se non il codice php che ogni tanto ci può mettere un po' di più nella generazione del numero casuale.

Controlla la configurazione del tuo server e la connessione.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Il sito si trova su un hosting a pagamento. Controllare il server? Cosa dovrei controllare esattamente?

Il tempo di esecuzione dello script php è trascurabile mentre la chiamata asincrona no, circa 9-10 secondi per ogni chiamata. Esageratamente lenta...se Ajax impiegasse davvero tutto questo tempo nessuno lo userebbe più....Ma comunque sta di fatto che non ho ancora capito "dove" sta il problema...  :o

risposto 6 anni fa
whitewolf11
modificato 6 anni fa
X 0 X

Se la chiamata diretta della pagina php che hai indicato sopra non ti fa aspettare troppo tempo mentre ci metti tanto col la pagina html allora direi che è un problema del tuo browser web.

Io non noto alcuna difficoltà o rallentamento nell'esecuzione del tutto usando firefox.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Utilizzo sempre firefox. Ma scusa, quando premi il bottone quanto tempo attendi per il caricamento? Arrivi a 8-10 secondi ?

risposto 6 anni fa
whitewolf11
X 0 X

Max 2 secondi, in dipendenza mi pare del tempo di esecuzione dello script php più che altro (trattandosi di funzioni che generano numeri random).

risposto 6 anni fa
Mario Santagiuliana
X 0 X

E come mai io lo vedo con dopo 8-10 secondi ?  :( Da cosa può dipendere ?

risposto 6 anni fa
whitewolf11
modificato 6 anni fa
X 0 X

Può dipendere da un sacco di cose.

Prima di tutto proverei a fare delle prove con altri browser web e anche con altre macchine ma che utilizzino la stessa linea di connessione al server.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Allora ho fatto una prova con un amico.

1) Lui dall'altra parte dell'italia

2) Connessione Wind/infostrada (mentre la mia è telecom)

3) Entrambi browser firefox

Lui ha aspettato dagli 8 ai 12 secondi per avere la risposta dal server (i numeri) , io 8-10 secondi. Abbiamo ripetuto la cosa per 5-6 volte.

Quindi non sono solo io ad aspettare in media una decina di secondi per ricevere la risposta.... :o

risposto 6 anni fa
whitewolf11
modificato 6 anni fa
X 0 X

Ripeto, lo script che mi hai dato sul mio sito web (hosting ion.it) è stato eseguito in 2-3 secondi massimo.

Puoi ricontrollare il tempo di esecuzione dello script php?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Lascia stare il tempo di esecuzione dello script, fa così anche se metti echo ciao.

Forse è un problema di hosting...

Mi dici che l'hai provato sul tuo spazio web e non riscontri problemi...bene....ma dimmi se vai su htto://www.volilowcostonline.com cosa vedi? Attendi anche te 8-10 secondi prima che esca il numero ?

Anzi chiunque leggesse tale post se gentilmente può rispondermi riportandomi i tempi di esecuzione che hanno riscontrato con i rispettivi browser e connessioni, grazie!

risposto 6 anni fa
whitewolf11
X 0 X

C'è un evidente problema con il tuo hosting.

Da un occhio qui: http://test.marionline.it/

Ho inserito i tuoi script, tale sottodominio lo eliminerò a breve.

Dal mio sito web non devo attendere così tanto per vedere una risposta.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Ciao MarioS, grazie mille per l'aiuto! Lo supponevo.....ma non avevo avuto modo di provarlo...

Ho un hosting con windows/IIS ....ma vai a capire ora dove sta il problema...

Potrei chiedere all'assistenza....ma dubito ricevere una risposta sensata...

Comunque l'importante è aver capito che il problema è legato all'hosting....

Ancora grazie mille!

risposto 6 anni fa
whitewolf11
X 0 X
Potrei chiedere all'assistenza....ma dubito ricevere una risposta sensata...

Loro dovrebbero riuscire a fornirti più informazioni.

Php e IIS, nonostante gli sforzi di Zend e Microsoft di integrare meglio i loro prodotti, rimangono ancora un passo indietro rispetto ad un server Linux, Apache e Php.

Il mio sito web è appoggiato ad un server LAMP (non è questo che però fa la differenza, qui c'è un problema più che altro di connettività mi pare).

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Ok, grazie mille! Proverò a chiedere all'assistenza e appena so qualcosa ti faccio sapere  O0

risposto 6 anni fa
whitewolf11
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda