Come posso ridurre il tempo di attesa (ttfb)


114

Ho una query che implica l'acquisizione di un elenco di utenti da una tabella in ordine ordinato in base all'ora in cui è stata creata. Ho ottenuto il seguente diagramma temporale dagli strumenti per sviluppatori di Chrome.

cronometraggio dal cromo

Puoi vedere che TTFB (tempo al primo byte) è troppo alto.
Non sono sicuro se sia a causa dell'ordinamento SQL. Se questo è il motivo, come posso ridurre questo tempo?
O è a causa del TTFB. Ho visto blog che dicono che TTFB dovrebbe essere inferiore (<1sec). Ma per me mostra> 1 sec. È a causa della mia domanda o qualcos'altro?
Non sono sicuro di come ridurre questo tempo.
Sto usando angolare. Devo usare angolare per ordinare la tabella invece dell'ordinamento SQL? (molti post dicono che non dovrebbe essere il problema)
Quello che voglio sapere è come posso ridurre il TTFB. Ragazzi! In realtà sono nuovo a questo. È il compito affidatomi dai membri del mio team. Non sono sicuro di come ridurre il tempo del TTFB. Ho visto molti post, ma non sono riuscito a capire bene. Cos'è TTFB. È il tempo impiegato dal server?


8
La tua domanda mostra una mancanza di comprensione di cosa sta succedendo qui. Questo è il momento di aspettare il server, quindi se usi AngularJS o qualche altro framework è irrilevante. Se vuoi migliorare il codice lato server, devi effettivamente mostrarci il codice.
dirkk

@govindpatel, se la mia risposta di seguito ti ha aiutato o pensi che risponda alla domanda, contrassegnala come risposta corretta;)
Daniel T. Sobrosa

Per un semplice ordinamento delle tabelle (supponendo che i dati della tabella siano già stati recuperati e tu stia solo ricorrono i dati da una proprietà diversa) sarà molto più veloce farlo lato client che inviare un'altra richiesta di dati ordinati.
Richik SC

Risposte:


116

Il TTFB non è il tempo al primo byte del corpo della risposta (cioè, i dati utili, come: json, xml, ecc.), Ma piuttosto il tempo al primo byte della risposta ricevuta dal server. Questo byte è l'inizio delle intestazioni di risposta.

Ad esempio, se il server invia le intestazioni prima di fare il duro lavoro (come un SQL pesante), otterrai un TTFB molto basso, ma non è "vero".

Nel tuo caso, TTFB rappresenta il tempo che dedichi all'elaborazione dei dati sul server.

Per ridurre il TTFB, è necessario eseguire più rapidamente il lavoro lato server.


2
Per diagnosticare ulteriormente i tempi che si verificano durante il TTFB, è possibile utilizzare metodi di temporizzazione lato server (ad es. Timer di configurazione o registro di debug) per eseguire il debug del tempo impiegato su ciascuna logica.
Raptor

1
Dai un'occhiata a questo articolo, spiega in dettaglio il problema e dà consigli per possibili soluzioni: websiteoptimization.com/speed/tweak/time-to-first-byte
LucaM

Attenzione a considerare TTFB come il punto più importante: blog.cloudflare.com/…
Owen Blacker

Se questa risposta ti aiuta a @govindpatel, contrassegnala come risposta giusta, per favore;)
Daniel T.Sobrosa

16

Ho incontrato lo stesso problema. Il mio progetto è in esecuzione sul server locale. Ho controllato il mio codice php.

$db = mysqli_connect('localhost', 'root', 'root', 'smart');

Uso localhostper connettermi al mio database locale. Questa forse è la causa del problema che stai descrivendo. Puoi modificare il tuo HOSTSfile. Aggiungi la linea

127.0.0.1 localhost.


5
Grazie. Sono stato cambiato localhost(TTFB: 1s) in 127.0.0.1(TTFB: 12ms)
Mr. Black

Nel mio caso anche questa risposta ha aiutato: TTFB 2,39 s -> TTFB 110 ms. Perché qualcuno l'ha sconsigliato?
Martin Pabst

Penso di averlo risolto anche per la mia applicazione Spring-Boot, sto usando un database Postgres in un Docker-Container, TTFB era fino a 10s, ora è solo circa 40ms :)
Sepultura

Perché "localhost" impiega così tanto tempo?
showdev

14

TTFB è qualcosa che accade dietro le quinte. Il tuo browser non sa nulla di ciò che accade dietro le quinte.

È necessario esaminare quali query vengono eseguite e come il sito Web si connette al server.

Questo articolo potrebbe aiutare a comprendere TTFB, ma per il resto è necessario approfondire la tua applicazione.


4

Ti suggerirei di leggere questo articolo e di concentrarti maggiormente su come ottimizzare la risposta complessiva alla richiesta dell'utente (una pagina, un risultato di ricerca ecc.)

Un buon argomento per questo è l'esempio che danno sull'uso di gzip per comprimere la pagina. Anche se ttfb è più veloce quando non si comprime, l'esperienza complessiva dell'utente è peggiore perché richiede più tempo per scaricare contenuti non compressi.


Assicurati di controllare la sezione commenti di quell'articolo. Molte persone danno validi motivi per preoccuparsi del TTFB.
Zack Macomber

4

Se stai usando PHP, prova a usare <?php flush(); ?>dopo </head>e prima </body>o qualunque sezione desideri produrre rapidamente (come l'intestazione o il contenuto). Produrrà il codice effettivo senza attendere la fine di php. Non utilizzare sempre questa funzione, altrimenti l'aumento della velocità non sarà evidente.

Ulteriori informazioni

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.