O que está causando o tempo de espera antes do carregamento do meu HTML?

12

Eu tenho um site que parece carregar muito lentamente. Quando executo um teste de velocidade, vejo que parece haver uma lacuna de 6 segundos antes do carregamento do HTML. Imagens e scripts JS carregam muito rápido depois desse ponto.

Você pode ver na foto abaixo as barras amarelas de 'tempo de espera':

O carregamento do arquivo HTML levou mais de 5 segundos, enquanto a maioria dos outros ativos carregou em menos de 1 segundo

Isso parece ser consistente, independentemente do conteúdo HTML da página.

Este site está usando um CMS (ModX Revo) para que o HTML seja realmente armazenado em um banco de dados SQL e produzido pelo PHP, mas nunca tive esse problema antes.

Alguém saberia o que está causando isso e como eu poderia acelerar isso?

MeltingDog
fonte
Isso é algo novo? Ou seja, essas páginas tiveram um desempenho normal antes e agora apresentam um desempenho ruim? Ou é uma instalação / site mais recente? Você pode nos contar mais?
Closetnoc 5/09/14
11
A menos que exista alguma rede intermediária, isso parece ser o tempo que o servidor está demorando para gerar a resposta? Você diz "não importa qual seja o conteúdo HTML" - conteúdo HTML através do seu CMS ou literalmente uma página HTML estática? Eu certamente tentaria uma página HTML estática simples "Hello World" se você ainda não o fez. Observe também que os servidores do pingdom estão do outro lado do mundo para a Austrália (que eu suponho que é onde você está hospedado)?
MrWhite 5/09/14
11
Na IMO, o problema está principalmente nessa página - seu servidor / CMS parece estar demorando muito para gerar a resposta. Consulta SQL ineficiente? Outras páginas do seu site parecem ser relativamente rápidas. (?)
MrWhite

Respostas:

13

O termo técnico para espera é referido como tempo para o primeiro byte e determina a capacidade de resposta de um servidor da Web ou de outros recursos de rede.

Alguns motivos comuns pelos quais você vê um tempo alto para o primeiro byte:

  • Rede sobrecarregada (hospedagem normalmente compartilhada)
  • Servidores de configuração incorreta
  • Distância entre você e o servidor (a localização geográfica desempenha um papel menor)
  • Erros do servidor (saltos)

Geralmente, esse problema geralmente é visto em hospedagem compartilhada devido à grande quantidade de sites e pessoas que os visitam, o que naturalmente aumenta o tempo de byte da rede. Outra causa possível é um erro na rede em algum lugar, como um salto ou porque o servidor não está dentro do local do seu público-alvo, por exemplo, um servidor 'GOOD' do Reino Unido terá um tempo de byte menor do que um servidor dos EUA que segmenta usuários no Reino Unido, devido à distância em que os dados precisam ser enviados e recebidos (normalmente, um aumento de cerca de 100-200 ms).

Talvez um tempo para conseguir um novo host

No passado, eu tenho que mudar de servidor para servidor por causa do atraso do primeiro byte, você pode estar na situação de ter que escolher um novo host ou atualizar seu pacote atual.

Teste confiável

Testar a velocidade do seu site a partir da banda larga doméstica é muito tendencioso, pois pode ser um problema com a sua banda larga não responder ao site. Você deve testar seu site usando várias conexões de vários servidores ... Eu recomendo o teste de páginas da web e a execução de vários testes ao mesmo tempo em diferentes locais e muitos no público-alvo geográfico. Isso lhe dará uma melhor visão geral do que está acontecendo, se o primeiro byte for recomendado, entre em contato com o seu host antes de qualquer outra coisa.

Ping e rastreamento roteiam o servidor

Se você tentar executar um ping no servidor, os resultados podem ser exibidos ou não, o ping usa ICMP em vez de UDP ou TCP, o que significa que não é como consultar o servidor na porta 80 na qual seu httpd estará executando. Você pode usar a rota de rastreamento para identificar quaisquer servidores na rota que possam estar causando o aumento do primeiro byte, novamente ... ele não consulta o servidor httpd na porta 80 e, se o traceroute usando o Windows, ele usa ICMP e Mac / Linux máquinas usarão UDP. Vale a pena testar porque é uma coisa tão rápida e fácil de fazer, mas se os resultados voltarem bem, não é necessário que não exista um problema em algum lugar.

Simon Hayter
fonte
Olá, @SunWKim Atualizei minha resposta com o que você pediu. Olhe para o final da minha resposta.
Simon Hayter
Concordo com seus motivos comuns para o tempo até o primeiro byte. Nesse caso, no entanto; Eu acredito que tem mais a ver com o código JavaScript.
Sun
O primeiro byte pode ser causado por uma grande variedade de coisas, mas o JavaScript não é um deles, já que a resposta do cabeçalho é anterior a elementos embutidos, como JavaScript, CSS, Imagens e assim por diante. Não confunda o primeiro byte com elementos e arquivos reais ..
Simon Hayter
Não estou confundindo os dois. Talvez se você visitou mbff.com.au e viu por si mesmo, possa estar convencido de que não é uma questão de tempo para o primeiro byte. O atraso está ocorrendo após a primeira resposta do cabeçalho.
Sun
11
The delay is occurring after the first header responseentão esse não é o primeiro byte. Primeiro byte é a primeira resposta.
Simon Hayter
4

1) Você possui o Adobe TypeKit, que não está carregando de forma assíncrona com o código atual. Tente substituí-lo pelo código assíncrono avançado: http://help.typekit.com/customer/portal/articles/649336-embed-code

Esse código de incorporação padrão aproveita o fato de que as tags bloqueiam a renderização adicional da página para ajudar a impedir o FOUT [Flash of Unstyled Text]. Enquanto o script Typekit está sendo carregado, a renderização da página é bloqueada, portanto o texto não começará a ser renderizado com fontes de fallback.

2) Teste com o novo TypeKit. Como está o tempo de carregamento agora? Melhor? Vá para o passo 3.

3) Substitua seu Google Analytics por um JavaScript atualizado que forneça a sintaxe assíncrona mais recente: https://developers.google.com/analytics/devguides/collection/gajs/

4) Teste. O carregamento da página é melhor ainda?

5) Finalmente, considere otimizar imagens como pattern.jpg. Eu o convertei para PNG e reduzi o tamanho do arquivo de 199kB para 56kB. Isso reduz o tempo para receber o arquivo: https://www.dropbox.com/s/i06jx509bmprhhh/pattern.png?dl=0

Eu espero que isso ajude.

Sol
fonte
3

Elementos PHP vs. Não PHP

Se você comparar os tempos de carregamento de ativos que não são PHP com os tempos de carregamento baseados em PHP, verá que o servidor responde rapidamente se o PHP não estiver envolvido.

Isso normalmente indica problemas internos ao seu script PHP.

O problema pode estar na camada PHP ou no banco de dados. O uso de ferramentas avançadas de depuração, como o XDebug ou o NewRelic, pode ajudá-lo a identificar rapidamente o gargalo.

Problemas de tempo para o primeiro byte podem ser causados ​​por restrições de hardware, configuração incorreta ou código ineficiente. Na hospedagem compartilhada, as restrições de hardware e a má configuração são mais prováveis.

De qualquer forma, resolver o problema geralmente significa um ou todos:

  • Mais hardware
  • Melhor programação
  • Adicionar cache

Um hardware mais rápido é uma solução óbvia, mas geralmente cara, se você já possui recursos dedicados.

Uma programação melhor pode não ser possível se o problema for interno do código que você não mantém ou não possui recursos do desenvolvedor.

O armazenamento em cache ajuda a reduzir o número de solicitações que devem atingir os recursos subjacentes e com baixo desempenho.

Teste

Ao usar ferramentas de teste, certifique-se de executar várias execuções. Os picos de rede e de servidor temporários podem facilmente levá-lo ao caminho errado, portanto, você deve tentar calculá-los.

Hospedagem

Se você estiver em uma conta de hospedagem compartilhada, considere migrar para serviços do tipo nuvem ou VPS para ter uma melhor visão dos problemas de desempenho. A menos que você use uma técnica de cache (serviço do tipo CDN ou Cloudflare), a correção de problemas de desempenho em sistemas de hospedagem compartilhada em massa pode ser muito desafiadora, pois você não tem controle suficiente do servidor.

jeffatrackaid
fonte
-1

Tente configurar cookies de terceiros para apenas visitados.

Tom
fonte