Visualizzazione risultati 1 fino 8 di 8

Discussione: Latenza nella risposta del server

  1. #1
    mazerr non è connesso Neofita
    Data registrazione
    30-12-2021
    Messaggi
    10

    Predefinito Latenza nella risposta del server

    Ciao,
    premessa: sono nuovo del forum.
    Sto utilizzando Angular lato client per recuperare dal database i dati degli utenti e mostrarli in una pseudo tabella.
    Quando provo in debug la web app (tutto funziona)i caricamenti dei dati e la loro visualizzazione avviene in alcuni istanti (<1s), mentre quando è in esecuzione sull'hosting Altervista devo aspettare anche più di 20 secondi e non capisco il motivo.
    Ho provato anche a cambiare connessioni, ma nulla.
    C'è qualcosa che io possa fare per scaricare i dati del server (in formato JSON) più velocemente?

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    Hai un link (anche di test) di una pagina json che genera una risposta così lenta? Mi sembra strano risponda in 20 secondi: così senza veder nulla direi che o c'è qualche problema nello script PHP oppure nella connessione.

    Ciao!

  3. #3
    mazerr non è connesso Neofita
    Data registrazione
    30-12-2021
    Messaggi
    10

    Predefinito

    Ciao, intanto grazie della tempestiva risposta.
    Purtroppo non riesco a condividere il link dell'API in quanto sarebbe necessario l'autenticazione per la risposta del server.
    Ho degli screenshot di Chrome Dev Tools che però non riesco ad allegare sul forum se non tramite URL (credo)
    Cerco di riportarti comunque le informazioni in modalità testuale: la pagina web richiede all'API PHP x/y/z.php all'incirca 35MB di dati i quali vengono ottenuti in circa 20 secondi (a differenza dei pochi secondi dell'utilizzo in locale).
    Nel caso fosse un problema di script PHP, quale potrebbe essere la causa?
    Il server Altervista ha limitazioni di velocità di invio dei dati?

    Grazie ancora.

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    Potrebbe essere dato da queries non ottimizzate. 35MB di dati è comunque molto, sono tutti dati generati prelevandoli dal database?

    Ciao!

  5. #5
    mazerr non è connesso Neofita
    Data registrazione
    30-12-2021
    Messaggi
    10

    Predefinito

    Si, sono dati presenti nel database, probabilmente il peso è dovuto al salvataggio in base 64 fatta per comodità di foto e documenti in Angular (sai se esistono modi di ottimizzare lo storage di documenti pesanti all'interno del database?).
    Comunque la query incriminata è una select * con un join.
    Dopo alcuni test ho notato che la query * senza join impiega quasi il 60% in meno del tempo e scarica circa 8MB di dati, con il join si passa ai famosi 20 secondi e 35MB di dati, nonostante il join sia fatto includendo solo username, email e password dell'utente...
    Possibili spiegazioni da un esperto?

    Edit: mi sbagliavo, le due query sono praticamente identiche a meno di un where condizionale per verificare email e password dell'utente
    Ultima modifica di mazerr : 14-04-2022 alle ore 22.36.50 Motivo: Nuove informazioni

  6. #6
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    È più una domanda da porre a Angular, posso solo supporre che il problema è la Connection Keep-Alive predefinita per il protocollo http/1.1
    Angular dovrebbe utilizzare Javascript "Vanilla", comunque sia da Gestione File del pannello di controllo altervista aggiungi
    Codice:
    RewriteBase /
    nel tuo file .htaccess altrimenti usa un cliente FTP e non dimenticare "abilita file nascosti".

    altervista htaccess

    Guida Angular tra cui anche il file.htaccess che riscrive una bella url

    TypeScript richiesta asincrona non richiede la fine di un flusso di dati
    Per gestire le richieste asincrone Angular utilizza gli Observable al posto delle Promises, un Observable è fondamentalmente un flusso di dati asincrono sul quale noi possiamo lavorare con gli opportuni operatori, come quello che abbiamo importato. I vantaggi legati all'uso di Observable rispetto alle Promises sono diversi: per esempio observable può essere usato per i Web socket dato che non richiede la fine di un flusso di dati per elaborare la risposta.
    https://www.html.it/pag/71946/creazione-del-service/
    Ultima modifica di darbula : 14-04-2022 alle ore 22.38.43

  7. #7
    mazerr non è connesso Neofita
    Data registrazione
    30-12-2021
    Messaggi
    10

    Predefinito

    Grazie mille, cosa fa quel "comando" e come devo modificare il mio htaccess?
    Codice:
    <IfModule mod_rewrite.c>
    ReweriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ index.html [L]
    </IfModule>
    Ultima modifica di mazerr : 14-04-2022 alle ore 22.40.11

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,261

    Predefinito

    Citazione Originalmente inviato da mazerr Visualizza messaggio
    Ciao,
    Sto utilizzando Angular lato client per recuperare dal database i dati degli utenti e mostrarli in una pseudo tabella.
    Quando provo in debug la web app (tutto funziona)i caricamenti dei dati e la loro visualizzazione avviene in alcuni istanti (<1s), mentre quando è in esecuzione sull'hosting Altervista devo aspettare anche più di 20 secondi e non capisco il motivo.
    Arrivo in ritardo probabilmente, ma ci sono due cose importanti da menzionare:

    • Per salvare dati binari nel database, usa colonne di tipo BLOB; se i file sono molti, e grandi, forse è più adatto tenerli fuori dal database, dopo sono raggiungibili via HTTP e quindi hai gratis vantaggi come la cache del browser
    • Trasferire 35MB in JSON è una Pessima Idea™. Trasferirne 8MB pure. È improbabile che il tuo front-end abbia bisogno di così tanti dati fornire la funzionalità iniziale. Se si tratta di immagini, come sopra, è meglio direttamente servirle via HTTP.

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •