Como posso reduzir o tempo de espera (ttfb)

114

Eu tenho uma consulta que envolve obter uma lista de usuários de uma tabela em ordem classificada com base na hora em que foi criada. Peguei o seguinte diagrama de tempo das ferramentas de desenvolvedor do Chrome.

sincronismo do cromo

Você pode ver que o TTFB (tempo até o primeiro byte) é muito alto.
Não tenho certeza se é por causa da classificação SQL. Se for esse o motivo, como posso reduzir esse tempo?
Ou é por causa do TTFB. Vi blogs que dizem que o TTFB deve ser menor (<1 seg). Mas para mim mostra> 1 seg. É por causa da minha consulta ou algo mais?
Não tenho certeza de como posso reduzir esse tempo.
Estou usando angular. Devo usar angular para classificar a tabela em vez da classificação SQL? (muitos posts dizem que esse não deve ser o problema)
O que eu quero saber é como posso reduzir o TTFB. Rapazes! Eu sou realmente novo nisso. É a tarefa que me foi atribuída pelos membros da minha equipa. Não tenho certeza de como posso reduzir o tempo TTFB. Vi muitos posts, mas não consegui entender direito. O que é TTFB. É o tempo gasto pelo servidor?

govindpatel
fonte
8
Sua pergunta mostra falta de compreensão do que está acontecendo aqui. Este é o tempo de espera pelo servidor, portanto, se você usa AngularJS ou alguma outra estrutura é irrelevante. Se você quiser melhorar o código do lado do servidor, você realmente precisa nos mostrar o código.
Dirkk
@govindpatel, se minha resposta abaixo o ajudou ou você acha que responde à pergunta, marque como a resposta correta;)
Daniel T. Sobrosa
Para classificação de tabela simples (supondo que os dados da tabela já foram buscados e você está apenas recorrendo aos dados por uma propriedade diferente), será muito mais rápido fazer isso do lado do cliente do que enviar outra solicitação de dados classificados.
Richik SC

Respostas:

116

O TTFB não é o tempo para o primeiro byte do corpo da resposta (ou seja, os dados úteis, como: json, xml, etc.), mas sim o tempo para o primeiro byte da resposta recebida do servidor. Este byte é o início dos cabeçalhos de resposta.

Por exemplo, se o servidor enviar os cabeçalhos antes de fazer o trabalho pesado (como SQL pesado), você obterá um TTFB muito baixo, mas não é "verdadeiro".

No seu caso, TTFB representa o tempo que você gasta processando dados no servidor.

Para reduzir o TTFB, você precisa fazer o trabalho do lado do servidor mais rápido.

Daniel T. Sobrosa
fonte
2
Para diagnosticar melhor as temporizações que acontecem durante o TTFB, você pode usar métodos de temporização do lado do servidor (por exemplo, temporizadores de configuração ou log de depuração) para depurar o tempo gasto em cada lógica.
Raptor
1
Ter um olhar para este artigo, ele explica o problema em detalhes e dá conselhos para possíveis soluções: websiteoptimization.com/speed/tweak/time-to-first-byte
Lucam
Cuidado ao tratar TTFB como o ponto mais importante: blog.cloudflare.com/…
Owen Blacker
Se esta resposta te ajudar @govindpatel, marque como a resposta certa, por favor;)
Daniel T. Sobrosa
16

Eu encontrei o mesmo problema. Meu projeto está sendo executado no servidor local. Eu verifiquei meu código php.

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

Eu uso localhostpara me conectar ao meu banco de dados local. Essa talvez seja a causa do problema que você está descrevendo. Você pode modificar seu HOSTSarquivo. Adicione a linha

127.0.0.1 localhost.

CH Chow
fonte
5
Obrigado. Eu fui mudar localhost(TTFB: 1s) para 127.0.0.1(TTFB: 12ms)
Sr. Black
No meu caso, essa resposta também ajudou: TTFB 2,39 s -> TTFB 110 ms. Por que alguém aprovou?
Martin Pabst
Acho que também consertou para meu aplicativo Spring-Boot, estou usando um banco de dados Postgres em um Docker-Container, TTFB era de até 10s, agora é apenas cerca de 40ms :)
Sepultura
Por que "localhost" demora tanto?
showdev
14

TTFB é algo que acontece nos bastidores. Seu navegador não sabe nada sobre o que acontece nos bastidores.

Você precisa verificar quais consultas estão sendo executadas e como o site se conecta ao servidor.

Este artigo pode ajudar a entender o TTFB, mas caso contrário, você precisa se aprofundar em seu aplicativo.

Pureferret
fonte
4

Eu sugiro que você leia este artigo e se concentre mais em como otimizar a resposta geral à solicitação do usuário (uma página, um resultado de pesquisa, etc.)

Um bom argumento para isso é o exemplo que eles dão sobre o uso do gzip para compactar a página. Embora o ttfb seja mais rápido quando você não compacta, a experiência geral do usuário é pior porque leva mais tempo para baixar o conteúdo que não está compactado.

Mike
fonte
Certifique-se de verificar a seção de comentários desse artigo. Muitas pessoas dão motivos convincentes para se preocupar com o TTFB.
Zack Macomber
4

Se você estiver usando PHP, tente usar <?php flush(); ?>after </head>e before </body>ou qualquer seção que deseja produzir rapidamente (como o cabeçalho ou conteúdo). Ele irá imprimir o código real sem esperar que o php termine. Não use esta função o tempo todo, ou o aumento de velocidade não será perceptível.

Mais informações

Matías Pizarro
fonte