Este é um problema bem estudado ("rastreamento da web de alto desempenho"), com muitas pesquisas disponíveis: link ... sim, eu estou trapaceando, mas honestamente, você deve ler a literatura primeiro.
Com base em minha própria experiência com a construção desse tipo de sistema no passado: você não pode vencer a velocidade da luz, então, de uma forma ou de outra, você incorrerá nela. O que você pode fazer é otimizar como e quando agendar buscas de recursos. Por exemplo, você pode ter subsistemas otimizados para lidar com partes do problema - por exemplo, Resolução de DNS. Você pode pré-resolver nomes e conectar-se diretamente ao endereço IP (basta adicionar o cabeçalho de host correto). Depois disso, você terá que incorrer no custo de conexão TCP, não há como evitar isso. Dito isso, se você tiver várias solicitações para o mesmo host, poderá aproveitá-las para serializar várias solicitações em uma conexão existente: isso ajuda a amortizar os custos do handshake TCP / TLS e oferece melhor desempenho de ponta a ponta. A partir daí, você precisa subir a escada do protocolo: às vezes, é possível rastrear cadeias de redirecionamento e lembrar o último local para pular os redirecionamentos extras no futuro (basta ter um fallback). Na verdade, o mesmo se aplica ao DNS. Você pode implementar uma estratégia otimista e conectar-se diretamente ao IP e, em seguida, usar um retorno se isso falhar. Para o TLS, você pode armazenar tickets de sessão e outros metadados para obter uma reconexão mais rápida (isto é, supondo que você se reconecte com freqüência suficiente).
tl; dr: Não estou adicionando nada de novo aqui, todas as dicas acima (e mais) são abordadas na pesquisa disponível. Pegue um café, passe algum tempo lendo os documentos existentes!