Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    richieste AJAX a pagine lente, asincrono si o no?

    Ciao

    ho un problema con delle richieste ajax:

    Ho una pagina che può impiegare da 1 a 15 secondi per aprirsi, in relazione ad alcune condizioni sul server.

    Questa pagina mi serve per fare l'ajax-pushing in una applicazione web (sto lavorando ad un framework che tra poco rilascerò sotto GPL).

    Il mio problema è che quando richiedo questa pagina (che impiega solitamente 10 secondi a generarsi) ogni altra richiesta che io faccio all'interno di quel dominio (indipendentemente che io la faccia su un'altro tab del browser, oppure con un'altra richiesta AJAX) aspetta che venga soddisfatta la prima richiesta prima di passare a tutte le altre.

    Esempio:

    1) richiesta AJAX a prova.php che impiega 10 secondi
    2) richiesta AJAX a prova2.php che impiega meno di 1 secondo

    Analizzando con Firebug quello che succede, le due richieste AJAX vengono create simultaneamente (e quindi sembrerebbero apparentemente asincrone) però la seconda richiesta viene soddisfatta solamente dopo la prima.

    E' normale?
    Si può fare qualcosa per evitarlo?

    Ciao e grazie
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Hai provato solo con lo stesso browser e diverso tab?

    Le richieste sono asincrone ma non ne puoi lanciare 2 contemporaneamente e aspettarti la risposta in modo asincrono.

    Ti spiego meglio, se fai 2 richieste ajax di cui la prima chiama una pagina php con all'interno semplicemente :

    sleep(10);
    echo "ciao";

    e la seconda :

    sleep(1);
    echo "ciao1";

    anche se la seconda dovrebbe avere una risposta più veloce vedrai sempre prima la risposta della prima richiesta e poi della seconda.

    Il fatto che tu provi dallo stesso browser verso lo stesso dominio probabilmente ti fa sottostare a questa regola.

    Se hai a disposizione Internet explorer prova a fare la richiesta contemporaneamente dai due browser, e se vuoi fare debug della chiamata ajax di explorer scaricati Fiddler.

    Ovviamente la generazione sarà comunque più lenta perchè il tuo sistema dovrà soddisfare 2 richieste contemporanee anzichè 1, ma teoricamente i tempi di attesa dei due browser dovrebbero essere equivalenti.

    Ciao

  3. #3
    ciao

    il problema è proprio questo!
    Ovviamente se uso due browser differenti (ma neanche, basta avere due hostname differenti che puntano allo stesso vhost) la richiesta breve arriva prima.
    Il problema è quando lo stesso browser ha più richieste concorrenti sullo stesso dominio, credo a questo punto che sia una specie di coda FIFO implementata nel browser, che per forse per ottimizzazione aspetta di terminare una richiesta verso quel dominio prima di aprirne un'altra.

    Io ho realizzato questo (sono in attesa da parte di sourceforge.net per rilasciarlo)

    http://work.kumbe.it/ajaxpushing/index.php

    Funziona tutto correttamente (anche perchè ho già usato questa soluzione per diversi progetti), solo che se viene usato in una applicazione web l'utente a volte può avere nel ritardo nel caricamento di alcune pagine, in quanto la sua pagina richiesta aspetta che venga soddisfatta prima la richiesta ajax long-live.
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.