Per semplificare la mia situazione; Ho 3 pagine PHP. Due di loro aggiungono e rimuovono rispettivamente le righe da un database. Il terzo recupera tutte le righe, le codifica come JSON e stampa il risultato.Perché alcune chiamate AJAX impiegano drasticamente più tempo per terminare rispetto ad altre quando gli URL hanno lo stesso tempo di risposta?
Ho temporizzato l'esecuzione di tutte le pagine, che varia da 0,001 a 0,004 secondi. Qui ci sono i tempi del Ajax chiede tuttavia:
Fetch intera tabella come JSON: 8-12ms
Aggiungi riga: 990-1010ms
Rimuovi riga: 990-1010ms
Il tempo di risposta del componente aggiuntivo e rimuovere i tempi causa inutili rallentamenti nella mia applicazione, considerando che i tempi di esecuzione di PHP sono semplici frazioni di secondi e il loro output è semplicemente "1" per il successo e "0" per il fallimento (Rispetto alla chiamata fetch, che stampa fino a 100 righe (~ 10 colonne) di dati come JSON)
Tutti i miei orari di ritorno Ajax sono misurati in Firebug. Tutte le chiamate Ajax vengono effettuate tramite jQuery ($.ajax()
).
Suppongo che questo abbia qualcosa a che fare con Firefox non considerando una richiesta di risposta GET a meno che non abbia ricevuto una quantità particolare di byte o caratteri e il tempo di risposta di 1 secondo sia un timeout di qualche tipo.
Qualche saggezza da condividere sul problema?
ho cronometrato i tempi di caricamento AJAX in Chrome e Opera, nonché (Medie):
Opera:
* Tutte le chiamate AJAX ~ 15 ms
Chrome:
* Rimuovere righe e recupera righe: ~ 25 ms
* Aggiungi riga: ~ 350 ms
La mia applicazione è scattante e reattiva in Opera, ma lenta a in misura diversa in tutti gli altri browser. Esattamente perché non mi è ancora chiaro.
Ho programmato anche IE 9, che si comporta praticamente identicamente a Opera. La mia applicazione ora funziona rapidamente in due browser.
Puoi pubblicare il codice (PHP, HTML, JavaScript e MySQL)? E quanto è grande il database? (numero di righe) –
Ryan Doherty: Temo di non poterlo fare, essendo un progetto proprietario. Ho già riassunto i tempi di esecuzione di PHP nella domanda, che include le query MySQL ed esclude PHP come causa del ritardo di 1 secondo. Qualsiasi frammento di codice particolare che vorresti vedere sono sicuro di poter fornire anche se – Hubro
Hai provato a misurare il tempo di caricamento di ogni pagina quando richiesto direttamente, e non tramite ajax? PHP ha un sovraccarico prima dell'esecuzione dello script (molto di più se stai usando qualche tipo di framework). –