No próximo artigo, vamos dar uma olhada em como podemos medir o tempo de resposta de um site a partir do terminal usando cURL. É interessante saber isso, pois pode ter um grande impacto na experiência do usuário.
Se você é um desenvolvedor web ou gerencia um servidor, você saberá que a velocidade é algo que deve estar sempre pronto. É importante que tudo funcione corretamente para que os usuários não se sintam frustrados ao acessar seu site.
A seguir veremos alguns comandos para podermos medir o tempo de resposta de um site. Com eles poderemos verifique o tempo em segundos de diferentes campos das páginas http e https. Faremos tudo a partir da linha de comando do Ubuntu usando cURL,
Use cURL para medir a velocidade de carregamento
De sites com HTTP
cURL tem muitas opções disponíveis, entre elas podemos encontrar -w, o que será útil para imprimir informações para saída padrão após uma operação concluída. Também nos oferece alguns variáveis que podemos usar para testar os diferentes tempos de resposta de um site.
Para conseguir essa medição, vamos usar algumas das variáveis que podem ser encontradas no documentação oficial cURL. Eles podem ser transmitidos em um determinado formato como uma string literal ou dentro de um arquivo.
As variáveis que usaremos serão as seguintes:
- time_namelookup → Tempo em segundos. Toma desde o início até que a resolução do nome esteja completa.
- time_connect → Tempo em segundos. Desde a inicialização até a conclusão da conexão TCP para o host remoto ou proxy.
- time_pretransfer → O tempo em segundos que levou desde o início até que a transferência do arquivo estava prestes a começar. Isso inclui todos os comandos e negociações de pré-transferência que são específicos aos protocolos envolvidos.
- time_starttransfer → O tempo em segundos que levou do início até que o primeiro byte estava prestes a ser transferido. Isso inclui time_pretransfer e também o tempo que o servidor levou para calcular o resultado.
- tempo_total → Tempo total em segundos que toda a operação durou. Ele é resolvido em milissegundos.
Pára execute o comando que vamos montar com as variáveis anteriores, só teremos que abrir um terminal (Ctrl + Alt + T) e escrever:
curl -s -w '\nTiempo de respuesta para: %{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null http://www.google.com
Como pode ser um pouco complicado gravá-lo em um terminal toda vez que quisermos usá-lo, podemos escolher gravá-lo em um arquivo.
Dentro do arquivo, ao qual vou dar o nome de control-speed-web.txt, você deve colar o seguinte código:
\nTiempo de respuesta para: %{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n
Depois de salvo e de volta ao terminal, podemos use este arquivo digitando a seguinte sintaxe:
curl -s -w "@control-velocidad-web.txt" -o /dev/null http://www.google.com
O comando acima funcionará em modo silencioso graças a -s. com -w a informação é impressa em stdout. Para redirecionar a saída para / dev / null vamos usar -o.
De sites com HTTPS
Se estivermos interessados em usar este teste para sites HTTPS, podemos executar o comando no terminal (Ctrl + Alt + T):
curl -s -w '\nTiempo de respuesta para: %{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nAppConnect Time:\t\t%{time_appconnect}\nRedirect Time:\t\t%{time_redirect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null https://ubunlog.com
Neste formato, mais variáveis de tempo são usadas além das acima. E estes são:
- time_appconnect → O tempo em segundos que levou desde o início até que a conexão SSL / SSH / etc para o host remoto foi concluída.
- time_redirect → Tempo em segundos, que demorou todas as etapas de redirecionamento antes do início da transação final. Calcule o tempo total de execução para vários redirecionamentos.
Como no caso anterior, ele também pode ser gravado em um arquivo. Como no caso anterior eu irei llamar control-speed-web.txt, e dentro você terá que colar:
\nTiempo de respuesta para: %{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nAppConnect Time:\t\t%{time_appconnect}\nRedirect Time:\t\t%{time_redirect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n
Salvei o arquivo e de volta ao terminal, podemos use-o com sintaxe:
curl -s -w "@control-velocidad-web.txt" -o /dev/null https://ubunlog.com
Para obter mais informações, você pode consulte o documentação cUrl ou a página de manual:
man curl
Como os valores do tempo de resposta mudarão devido a diferentes fatores, é aconselhável realizar diversos testes e estabelecer uma velocidade média. Algo que também veremos é que acessar um site por meio de HTTP geralmente é muito mais rápido do que por meio de HTTPS.