
Compreender e medir os horários do HTTP é como ter uma superpotência no desenvolvimento da Web. É como ter uma habilidade especial que permita ver como os computadores conversam entre si, do seu dispositivo para um servidor ou entre servidores. Ajuda você a encontrar e corrigir problemas que diminuem seus sites ou aplicativos. Neste artigo, descobriremos como aprimorar o tempo de resposta HTTP no Node.js para sites e aplicativos mais rápidos.
Desembalando o básico
Antes de nos aprofundarmos nos horários do HTTP, vamos aprender alguns básicos para estabelecer as bases para uma compreensão adequada.
IP (Internet Protocol):
A espinha dorsal da comunicação de rede, IP lida com endereçamento e roteamento. Ele garante a entrega de pacotes de dados de hosts de origem para destino em uma ou mais redes IP.
DNS (servidores de nomes de domínio):
Este sistema de nomeação hierárquica traduz nomes de host legíveis por humanos, cruciais para Aplicativos da Webem endereços IP legíveis por máquina.
TCP (Protocolo de Controle de Transmissão):
Uma regra que ajuda a configurar e manter as negociações entre os programas de computador em uma rede. Ele garante entrega confiável, ordenada e verificada por erros de dados entre hosts em uma rede IP.
SSL/TLS (segurança da camada de transporte):
Protocolos criptográficos que fornecem segurança da comunicação em uma rede. SSL, uma versão mais antiga, abriu o caminho para o TLS. Ambos usam certificados para estabelecer conexões seguras, com o TLS sendo a escolha mais moderna e segura.
Pesquisa de DNS:
Tempo gasto resolvendo nomes de domínio para endereços IP. Cada novo domínio desencadeia uma viagem de ida e volta completa para a pesquisa do DNS. Nenhuma pesquisa é necessária se o destino já for um endereço IP.
Conexão TCP:
A duração para estabelecer uma conexão TCP entre os hosts de origem e destino. Isso envolve um processo de aperto de mão em várias etapas, gerenciado pelo sistema operacional. Se a conexão TCP não puder ser estabelecida, o tempo limite do OS prevalecerá.
TLS Handshake:
Tempo dedicado a concluir um aperto de mão TLS. Esse processo envolve a troca de autenticação e as chaves para estabelecer ou retomar sessões seguras. Observe que um aperto de mão TLS não ocorre com solicitações não-HTTPS.
Hora de primeiro byte (TTFB):
O tempo gasto esperando a resposta inicial. Essa duração encapsula a latência de uma viagem de ida e volta ao servidor, juntamente com o tempo que o servidor leva para processar a solicitação e fornecer a resposta.
Transferência de conteúdo:
O tempo alocado para receber os dados de resposta. A duração é influenciada pelo tamanho dos dados de resposta e pela largura de banda de rede disponível.
Como os horários do HTTP ajudam a identificar gargalos?
Por exemplo, se a pesquisa do DNS levar mais tempo do que o previsto, o problema poderá estar relacionado ao seu provedor de DNS ou configurações de cache. E se o tempo para o primeiro byte for prolongado, você poderá examinar rapidamente a latência entre os pontos de extremidade e avaliar a carga atual do servidor.
Além disso, a transferência de conteúdo atrasada pode resultar de um corpo de resposta ineficiente, como transmitir dados excessivos (propriedades JSON não utilizadas) ou devido a uma conexão lenta.
Medindo os horários HTTP em Node.js: revelando o código
Para verificar os horários do HTTP no Node.js, devemos ouvir solicitações, respostas e eventos de soquetes específicos. Aqui está um snippet de código rápido demonstrando como fazer isso no node.js; Este exemplo se concentra apenas nos horários.


Exemplo Código para Pesquisa de DNS
// Verifique se ocorreu a pesquisa DNS (não um endereço IP)
const dnslookup = dnslookupat! == indefinido? getDuration (startat, dnslookupat): indefinido;
Você pode usar o seguinte código para verificar o Conexão TCP
const tcpConnection = getDuration (dnslookUpat || startat, tcpConnectionAt);
O TLS Handshake Funciona apenas com o protocolo HTTPS
// Verifique se ocorreu handshake de TLS (https)
const tlshandshake = tlshandshakeat! == indefinido? getDuration (tcpConnectionAt, tlshandshakeat): indefinido;
Após o aperto de mão do TLS, esperamos o servidor enviar o Primeiro byte
const FirstByte = getDuration (tlshandshakeat || tcpConnectionAt, FirstByTeat);
Depois do primeiro byte Transferência de conteúdo começa
const contentTransfer = getDuration (FirstByTeat, endat);
Ferramentas para medir o tempo de resposta
Agora que aprendemos como medir os horários do HTTP com o nó, vamos dar uma olhada em algumas das ferramentas disponíveis. Essas ferramentas podem ser valiosas para compreender suas solicitações HTTP.
Módulo de solicitação
O módulo de solicitação amplamente usado vem equipado com um recurso conveniente para medir os horários do HTTP. Para ativar esse recurso, use a propriedade Time.


Rastreamento distribuído
Você pode usar a técnica de rastreamento distribuído e exibir os horários HTTP visualmente em uma linha do tempo. Essa abordagem oferece uma visão holística dos processos em segundo plano, revelando o custo real da construção de sistemas distribuídos.
Você pode usar a biblioteca aberta de rastreamento para distribuir com sucesso rastreamento.
Conclusão
Explorando os horários HTTP no Node.js pode revelar gargalos de desempenho e, felizmente, o ecossistema de nós oferece excelentes ferramentas para extrair essas métricas cruciais do seu aplicativo. Portanto, use as ferramentas ou técnicas de codificação para melhorar o tempo de resposta dos seus aplicativos Node.js.