Comment puis-je réduire le temps d'attente (ttfb)

114

J'ai une requête qui consiste à obtenir une liste d'utilisateurs à partir d'une table dans un ordre trié en fonction de l'heure à laquelle elle a été créée. J'ai obtenu le chronogramme suivant des outils de développement Chrome.

chronométrage du chrome

Vous pouvez voir que TTFB (time to first byte) est trop élevé.
Je ne sais pas si c'est à cause du tri SQL. Si c'est la raison, comment puis-je réduire ce temps?
Ou est-ce à cause du TTFB. J'ai vu des blogs qui disent que TTFB devrait être inférieur (<1sec). Mais pour moi, cela montre> 1 sec. Est-ce à cause de ma requête ou autre chose?
Je ne sais pas comment puis-je réduire ce temps.
J'utilise angulaire. Dois-je utiliser angular pour trier la table au lieu du tri SQL? (De nombreux articles disent que cela ne devrait pas être le problème)
Ce que je veux savoir, c'est comment puis-je réduire le TTFB. Les mecs! Je suis en fait nouveau dans ce domaine. C'est la tâche que m'ont confiée les membres de mon équipe. Je ne sais pas comment puis-je réduire le temps TTFB. J'ai vu de nombreux messages, mais je n'ai pas pu comprendre correctement. Qu'est-ce que TTFB. Est-ce le temps pris par le serveur?

govindpatel
la source
8
Votre question montre un manque de compréhension de ce qui se passe ici. C'est le temps d'attendre le serveur, donc que vous utilisiez AngularJS ou un autre framework n'a pas d'importance. Si vous souhaitez améliorer le code côté serveur, vous devez en fait nous montrer le code.
dirkk
@govindpatel, si ma réponse ci-dessous vous a aidé ou si vous pensez qu'elle répond à la question, veuillez la marquer comme la bonne réponse;)
Daniel T. Sobrosa
Pour un tri de table simple (en supposant que les données de la table ont déjà été récupérées et que vous ne faites que recourir aux données par une propriété différente), il sera beaucoup plus rapide de le faire côté client que d'envoyer une autre demande de données triées.
Richik SC

Réponses:

116

Le TTFB n'est pas l'heure du premier octet du corps de la réponse (c'est-à-dire les données utiles, telles que: json, xml, etc.), mais plutôt l'heure du premier octet de la réponse reçue du serveur. Cet octet est le début des en-têtes de réponse.

Par exemple, si le serveur envoie les en-têtes avant d'effectuer le dur travail (comme du SQL lourd), vous obtiendrez un TTFB très bas, mais ce n'est pas "vrai".

Dans votre cas, TTFB représente le temps que vous passez à traiter les données sur le serveur.

Pour réduire le TTFB, vous devez effectuer le travail côté serveur plus rapidement.

Daniel T. Sobrosa
la source
2
Pour diagnostiquer davantage les minutages qui se produisent pendant TTFB, vous pouvez utiliser des méthodes de minutage côté serveur (par exemple, des minuteries de configuration ou un journal de débogage) pour déboguer le temps passé sur chaque logique.
Raptor
1
Jetez un œil à cet article, il explique le problème en détails et donne des conseils sur les solutions possibles: websiteoptimization.com/speed/tweak/time-to-first-byte
LucaM
Attention à ne pas considérer TTFB comme le point le plus important: blog.cloudflare.com/…
Owen Blacker
Si cette réponse vous aide @govindpatel, marquez-la comme la bonne réponse, s'il vous plaît;)
Daniel T.Sobrosa
16

J'ai rencontré le même problème. Mon projet s'exécute sur le serveur local. J'ai vérifié mon code php.

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

J'utilise localhostpour me connecter à ma base de données locale. C'est peut-être la cause du problème que vous décrivez. Vous pouvez modifier votre HOSTSfichier. Ajouter la ligne

127.0.0.1 localhost.

CH Chow
la source
5
Je vous remercie. J'étais changement localhost(TTFB: 1s) à 127.0.0.1(TTFB: 12ms)
M. Black
Dans mon cas, cette réponse a également aidé: TTFB 2,39 s -> TTFB 110 ms. Pourquoi quelqu'un a-t-il voté contre?
Martin Pabst
Je pense que cela a également corrigé le problème pour mon application Spring-Boot, j'utilise une base de données Postgres dans un Docker-Container, TTFB était jusqu'à 10s, maintenant il n'est que d'environ 40ms :)
Sepultura
Pourquoi "localhost" prend-il autant de temps?
showdev
14

TTFB est quelque chose qui se passe dans les coulisses. Votre navigateur ne sait rien de ce qui se passe dans les coulisses.

Vous devez examiner quelles requêtes sont exécutées et comment le site Web se connecte au serveur.

Cet article peut vous aider à comprendre TTFB, mais sinon, vous devez approfondir votre application.

Pureferret
la source
4

Je vous suggère de lire cet article et de vous concentrer davantage sur la façon d'optimiser la réponse globale à la demande de l'utilisateur (soit une page, un résultat de recherche, etc.)

Un bon argument pour cela est l'exemple qu'ils donnent sur l'utilisation de gzip pour compresser la page. Même si ttfb est plus rapide lorsque vous ne compressez pas, l'expérience globale de l'utilisateur est pire car il faut plus de temps pour télécharger du contenu qui n'est pas compressé.

Mike
la source
N'oubliez pas de consulter la section commentaires de cet article. Beaucoup de gens donnent des raisons convaincantes de se préoccuper du TTFB.
Zack Macomber le
4

Si vous utilisez PHP, essayez d'utiliser <?php flush(); ?>après </head>et avant </body>ou toute autre section que vous souhaitez afficher rapidement (comme l'en-tête ou le contenu). Il affichera le code réel sans attendre la fin de php. N'utilisez pas cette fonction tout le temps, sinon l'augmentation de la vitesse ne sera pas perceptible.

Plus d'informations

Matías Pizarro
la source