¿Cómo puedo reducir el tiempo de espera (ttfb)?

113

Tengo una consulta que implica obtener una lista de usuarios de una tabla en orden ordenado según el momento en que se creó. Obtuve el siguiente diagrama de tiempo de las herramientas de desarrollo de Chrome.

cronometraje desde el cromo

Puede ver que TTFB (tiempo hasta el primer byte) es demasiado alto.
No estoy seguro de si se debe al tipo SQL. Si esa es la razón, ¿cómo puedo reducir este tiempo?
O es por el TTFB. Vi blogs que dicen que TTFB debería ser menor (<1 segundo). Pero para mí muestra> 1 seg. ¿Es por mi consulta u otra cosa?
No estoy seguro de cómo puedo reducir este tiempo.
Estoy usando angular. ¿Debo usar angular para ordenar la tabla en lugar de ordenar SQL? (muchas publicaciones dicen que ese no debería ser el problema)
Lo que quiero saber es cómo puedo reducir TTFB. Chicos! De hecho, soy nuevo en esto. Es la tarea que me encomendaron los miembros de mi equipo. No estoy seguro de cómo puedo reducir el tiempo TTFB. Vi muchas publicaciones, pero no pude entender correctamente. Qué es TTFB. ¿Es el tiempo que tarda el servidor?

govindpatel
fuente
8
Su pregunta muestra una falta de comprensión de lo que está sucediendo aquí. Este es el momento de esperar al servidor, por lo que si usa AngularJS o algún otro marco es irrelevante. Si desea mejorar el código del lado del servidor, debe mostrarnos el código.
dirkk
@govindpatel, si mi respuesta a continuación le ha ayudado o cree que responde a la pregunta, márquela como la respuesta correcta;)
Daniel T. Sobrosa
Para una clasificación simple de la tabla (asumiendo que los datos de la tabla ya se han obtenido y simplemente está recurriendo a los datos por una propiedad diferente) será mucho más rápido hacerlo del lado del cliente que enviar otra solicitud de datos ordenados.
Richik SC

Respuestas:

115

El TTFB no es el tiempo hasta el primer byte del cuerpo de la respuesta (es decir, los datos útiles, como: json, xml, etc.), sino el tiempo hasta el primer byte de la respuesta recibida del servidor. Este byte es el comienzo de los encabezados de respuesta.

Por ejemplo, si el servidor envía los encabezados antes de hacer el trabajo duro (como SQL pesado), obtendrá un TTFB muy bajo, pero no es "verdadero".

En su caso, TTFB representa el tiempo que pasa procesando datos en el servidor.

Para reducir el TTFB, debe hacer el trabajo del lado del servidor más rápido.

Daniel T. Sobrosa
fuente
2
Para diagnosticar aún más los tiempos que ocurren durante TTFB, puede usar métodos de tiempo del lado del servidor (por ejemplo, configurar temporizadores o registro de depuración) para depurar el tiempo dedicado a cada lógica.
Raptor
1
Eche un vistazo a este artículo, explica el problema en detalle y brinda consejos para posibles soluciones: websiteoptimization.com/speed/tweak/time-to-first-byte
LucaM
Tenga cuidado de tratar TTFB como el punto más importante: blog.cloudflare.com/…
Owen Blacker
Si esta respuesta le ayuda @govindpatel, márquela como la respuesta correcta, por favor;)
Daniel T. Sobrosa
16

Me he encontrado con el mismo problema. Mi proyecto se está ejecutando en el servidor local. Revisé mi código php.

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

Utilizo localhostpara conectarme a mi base de datos local. Quizás esa sea la causa del problema que está describiendo. Puede modificar su HOSTSarchivo. Agrega la línea

127.0.0.1 localhost.

CH Chow
fuente
5
Gracias. Estaba cambio localhost(TTFB: 1s) a 127.0.0.1(TTFB: 12ms)
Sr. Negro
En mi caso, esta respuesta también ayudó: TTFB 2,39 s -> TTFB 110 ms. ¿Por qué alguien lo rechazó?
Martin Pabst
Creo que eso también lo solucionó para mi aplicación Spring-Boot, estoy usando una base de datos de Postgres en un Docker-Container, TTFB fue de hasta 10s, ahora solo son unos 40ms :)
Sepultura
¿Por qué "localhost" tarda tanto más?
showdev
14

TTFB es algo que sucede detrás de escena. Su navegador no sabe nada sobre lo que sucede detrás de escena.

Debe investigar qué consultas se están ejecutando y cómo se conecta el sitio web al servidor.

Este artículo puede ayudar a comprender TTFB, pero de lo contrario, debe profundizar en su aplicación.

Pureferret
fuente
4

Le sugiero que lea este artículo y se centre más en cómo optimizar la respuesta general a la solicitud del usuario (ya sea una página, un resultado de búsqueda, etc.)

Un buen argumento para esto es el ejemplo que dan sobre el uso de gzip para comprimir la página. Aunque ttfb es más rápido cuando no comprime, la experiencia general del usuario es peor porque lleva más tiempo descargar contenido que no está comprimido.

Miguel
fuente
Asegúrese de revisar la sección de comentarios de ese artículo. Muchas personas dan razones convincentes para preocuparse por TTFB.
Zack Macomber
4

Si está usando PHP, intente usar <?php flush(); ?>after </head>y before </body>o cualquier sección que desee generar rápidamente (como el encabezado o el contenido). Generará el código real sin esperar a que termine php. No use esta función todo el tiempo, o el aumento de velocidad no se notará.

Más información

Matías Pizarro
fuente