it-swarm-pt.tech

Como reduzir o "tempo do primeiro byte" no meu site?

se você for até a página inicial, verá que antes que a página carregue, o navegador aguarda ...

Como eu poderia reduzir Tempo para o primeiro byte ?

enter image description here

16
sparkle

Ninguém pode dar uma resposta detalhada sem você mostrar o código responsável por gerar o conteúdo do site - porque é onde está o atraso.

No entanto, desde que o site está usando php, você provavelmente está usando buffer de saída

Dado esse o caso, o código a seguir fornecerá um TTFB de (latência de rede +) 2s:

<?php ob_start(); ?>
<!doctype html>
<html>
    <head>
        <title>Slow to Load, Slow to finish</title>
    </head>
    <body>
    <?php 
        sleep(2); // Simulate slow processing
        echo "Body"
    ?>
    </body>
</html>

Considerando que isso lhe dará um TTFB de (latência de rede +) 0s:

<!doctype html>
<html>
    <head>
        <title>Fast to load, Slow to finish</title>
    </head>
    <body>
        <?php ob_start(); ?>
        <?php 
            sleep(2); // Simulate slow processing
            echo "Body"
        ?>
    </body>
</html>

O tempo para carregar a página inteira é o mesmo em ambos os casos - somente quando o atraso é alterado. Se você está especificamente focado na redução de TTFB (por que), isso deve lhe dar informações suficientes para investigar mais.

IMPORTANT: Existem muitas alterações de frontend você deve fazer antes de focar no TTFB.

15
AD7six

O atraso é causado pelo script do lado do servidor que gera a página de índice.

Por um rápido olhar para o seu site, posso imaginar que o site está usando PHP. Então, o atraso é causado por algo contido no seu script index.php.

A hospedagem, a rede, o hardware e o servidor HTTP (Apache) definitivamente NÃO são a causa. Seu gráfico mostra que arquivos estáticos (.css, .js e assim por diante) são entregues rapidamente.

Então, para mais detalhes você deve fornecer mais informações (a execução lenta do index.php pode ter várias razões ...).

3
Frunsi

Eu lidei com enorme TTFB (8-10 segundos) e procurando desesperadamente por uma solução. Depois de pesquisar e pesquisar sem sucesso, decidi dar uma olhada mais de perto no meu código PHP e nos índices do banco de dados

A solução de buffer output reduz meu TTFB um pouco, mas não o suficiente. Eu tive reclamações de usuários novamente. 

O problema real é o tempo de processamento de server (consultas DB e loops PHP) e a fonte HTML que você gerou.

Agora, sugiro seguir estas etapas:

  1. Dê uma olhada nos índices do banco de dados. Certifique-se de usar os índices apropriados para "todos os dados" que você retorna. Use Explain para verificar se seu índice é usado, qual deles é usado e como é usado.

No meu caso, eu retorno uma matriz de objetos e verifiquei meus índices para minha tabela principal. Tudo parecia OK, mas esqueci que meus objetos incluem outros objetos menores de outras tabelas. Essas tabelas não foram indexadas corretamente. Daí meu enorme TTFB. Acabei de passar de 8 segundos para 2 segundos apenas adicionando o índice adequado às tabelas certas. 

  1. Dê uma olhada no seu código PHP. 

Você pode ter alguns loop in loop que podem ser lentos para processar. Você deve usar um framework MVC PHP. Sua escolha. Eu não vou citar nenhum. 

Evite esse código, mesmo que esteja funcionando. Eu sei, alguns programadores PHP4 dirão que é bom. :)

$query = "SELECT something FROM table";
$result = mysqli_query($mysqli, $query);

if($result) {
    while($row = mysqli_fetch_assoc($result)) {
        $query = "UPDATE other_table SET something_else = "'.$row['something'].'";
        $result2 = mysqli_query($mysqli, $query)
    }
}
  1. Preste atenção no código HTML gerado.

Por exemplo, você gera código Javascript através de PHP loops. A lógica está bem. O tempo de carregamento não é. Digamos que você retorne 100 linhas para uma tabela. Para cada linha, você tem apenas 5 ações possíveis (alterar status, editar, excluir, duplicar, imprimir). Isso significa que 5 diálogos jQuery (HTML divs, com controles) e 5 scripts JS multiplicam por 100 linhas = milhares de linhas de código a serem escritas nessa página. Meu caso, mais de 32.000 linhas no meu código HTML de 4MB . Acabei de passar de 2 segundos para menos de 1 segundo depois de colocar todos esses diálogos em funções JS apropriadas. 

Em conclusão, (se você ainda estiver lendo isto :)) não procure por algumas funções mágicas para reduzir seu TTFB. Procure seu código e seu banco de dados.

PS: Algumas outras coisas ajudarão a aumentar a velocidade: cache e compactação do navegador, uso de CDN, minify HTML, CSS e JS, adiar a análise de JavaScript, combinar imagens em sprites CSS, etc. Usar velocidade da página do Google e Google Auditorias para mais sugestões de desempenho. 

3
Adrian P.

Erros no .htaccess também podem aumentar muito o TTFB.

Eu tive que remover algumas linhas antigas de código deixadas pelo Wordfence para resolver o meu TTFB de 8-12 segundos (agora 500ms).

1
Supaiku

Eu acho que depende de quais ferramentas você usa para medir esse tipo de dados. Quando eu usei webpagetest.org - o tempo para o primeiro byte foi de 292 ms, o que é bom. Talvez você deva executar novamente seu cheque?

Parte deste número é baixo para onde você está em relação ao servidor - quanto mais Hops você tiver que fazer - maior será esse número. É também sobre o hardware e a conectividade do servidor - geralmente isso é algo que você não pode realmente controlar. Você pode querer procurar outros hosts, mas eu primeiro executaria mais alguns testes - faça com que seus amigos testem seu site no site webpagetest.org (ou similar) e vejam quais valores eles obtêm.

0
Alex Holsgrove