Há muitas otimizações diferentes que você pode fazer quando se trata do WordPress, e algumas são mais importantes que outras. Um fator que costuma ser negligenciado é o tempo de pesquisa associado ao DNS e o impacto que ele causa no seu site. Assim como com o TTFB e a latência de rede, é uma peça importante do quebra-cabeça quando se trata de calcular o tempo total de carregamento da página. Então, hoje vamos nos aprofundar em algumas recomendações sobre como reduzir as pesquisas de DNS e agilizá-las, por que você deve fazer isso e como ela tem um papel importante no desempenho do seu site WordPress.

O que é Pesquisa de DNS?

Para mostrar o que é uma pesquisa de DNS, você precisa primeiro entender como o DNS funciona. DNS (sistema de nomes de domínio) é essencialmente a espinha dorsal da internet. Uma referência comum para explicar como o DNS funciona é pensar nele como uma lista telefônica para a rede mundial de computadores. Todos os sites e domínios que você visita são mapeados para um endereço IP.

Quando você digita Google.com na sua barra de endereços, uma consulta DNS é realizada pelo seu provedor para solicitar os servidores de nomes associados ao domínio. O mapeamento para o endereço IP é feito nos bastidores pelo servidor, permitindo que você use o nome de domínio para acessá-lo. Sem o DNS, você teria que digitar algo como 216.58.217.206 para chegar ao Google. Não seria divertido!

Como funciona o DNS
Como funciona o DNS

Quando você navega para um site, uma pesquisa de DNS deve ser feita para cada domínio que é solicitado antes que qualquer coisa seja baixada. No entanto, uma pesquisa de DNS não precisa ser executada em todos os recursos. Por exemplo, digamos que nós temos as seguintes solicitações HTTP:

https://wpdev.ink/
https://js.stripe.com/v3/
https://cdn.wpdev.ink/wp-content/themes/twentyseventeen/assets/images/header.jpg
https://cdn.wpdev.ink/wp-content/themes/twentyseventeen/assets/js/skip-link-focus-fix.js
https://cdn.wpdev.ink/wp-content/themes/twentyseventeen/assets/js/global.js
https://cdn.wpdev.ink/wp-content/themes/twentyseventeen/assets/js/jquery.scrollTo.js
https://cdn.wpdev.ink/fonts/open-sans-v13-latin-regular.woff2
https://cdn.wpdev.ink/fonts/open-sans-v13-latin-700.woff2

Embora haja um total de oito solicitações HTTP acima, existem apenas três domínios exclusivos totais. O que significa que existem três pesquisas de DNS.

https://wpdev.ink
https://js.stripe.com
https://cdn.wpdev.ink

Você não pode visitar um site sem primeiro acessar um Servidor de Nomes de Domínio (DNS). Se ocorrerem problemas de DNS, você poderá enfrentar o erro “servidor DNS não responde“, o que sugere que os sistemas de nomes descentralizados responsáveis pela transformação de nomes de hosts em endereços IP falharam em responder.

Pesquisas de DNS no Pingdom

Abaixo, vemos como as solicitações acima aparecem na ferramenta de teste de velocidade do site Pingdom. O DNS é representado como a barra rosa e medido em milissegundos. Quando você executa seu site pela primeira vez através do Pingdom, ele executa uma nova pesquisa, e precisa consultar o registro DNS de cada domínio para obter as informações de IP. Observe que não é necessário consultar o DNS várias vezes no domínio cdn.wpdev.ink. É assim que o DNS funciona. Só precisa consultar um domínio uma vez. Portanto, há oito solicitações totais abaixo, mas apenas três pesquisas de DNS.
Essas pesquisas de DNS resultam em tempo de carregamento adicional, devido ao fato de que nada pode ser carregado até que as pesquisas de DNS sejam concluídas. Observe abaixo que a pesquisa de DNS na URL CDN levou mais de 300 ms. E isso não inclui as pesquisas em wpdev.ink ou js.stripe.com. Então você pode ver como isso pode se acumular ao longo do tempo.

Pesquisas de DNS no Pingdom
Pesquisas de DNS no Pingdom

Quando você executa seu site por meio do Pingdom mais de uma vez, ele armazena o DNS em cache porque ele já conhece as informações de IP e não precisa realizar a pesquisa novamente. Esse é um dos motivos pelos quais seu site aparece mais rápido depois de executá-lo por meio do Pingdom várias vezes. Como você pode ver na tela abaixo, no segundo teste, o tempo de pesquisa de DNS na URL da CDN é 0 ms. Esta é uma área que muitas pessoas interpretam erroneamente. Mas não se preocupe, vamos nos aprofundar mais no cache DNS abaixo.

Cache de DNS no Pingdom
Cache de DNS no Pingdom

Pesquisas de DNS no GTmetrix

Cada ferramenta de teste de velocidade do site funciona um pouco diferente, mas quase todas calculam os tempos de pesquisa de DNS para você. Abaixo você vê como as mesmas solicitações aparecem no GTmetrix. O DNS é representado como a barra verde e medido em milissegundos

Pesquisas de DNS no GTmetrix
Pesquisas de DNS no GTmetrix

Pesquisas de DNS no WebPagetest

Aqui está um exemplo usando o WebPageTest. Na verdade, ele fornece uma visão geral rápida dos detalhes da sua solicitação, na qual você pode clicar na coluna “Pesquisa de DNS” e classificá-la pelos tempos de resposta mais altos. Nós rodamos o usatoday.com através da ferramenta como um exemplo, e só o tempo de busca do DNS demorou 6,5 segundos!
É bastante comum que muitos desses sites de notícias não sejam altamente otimizados devido a todas as suas solicitações externas. Mas, como você pode ver, o tempo de pesquisa de DNS no site provavelmente demorou mais para carregar do que os sites inteiros da maioria das pessoas. É por isso que o DNS importa.

Longos tempos de pesquisa de DNS (webpagetest)
Longos tempos de pesquisa de DNS (webpagetest)

Como Reduzir e Acelerar Pesquisas de DNS

Agora que você sabe um pouco mais sobre como o DNS funciona, mostraremos algumas recomendações sobre como reduzir as pesquisas de DNS e agilizá-las no seu site WordPress. Em algumas ferramentas de teste de velocidade do site, isso também é chamado de “minimizar pesquisas de DNS”.

Minimize as pesquisas de DNS no Pingdom
Minimize as pesquisas de DNS no Pingdom

Dica 1 – Use um Provedor de DNS Rápido

É importante entender que, assim como na hospedagem, há provedores de DNS mais rápidos e mais lentos por aí. Esta é uma das primeiras coisas que você deve arrumar.

Normalmente, o DNS gratuito fornecido por registradores de domínio como GoDaddy e Namecheap é muito lento. Os provedores de DNS normalmente funcionam exatamente como um CDN; eles têm vários POPs ao redor do mundo. Grandes provedores de DNS como Amazon, Cloudflare, Dyn e DNS Made Easy têm infraestruturas enormes especificamente projetadas para DNS com ambientes de baixa latência.

Fizemos alguns testes para comparar as velocidades de alguns provedores de DNS populares. Usamos a ferramenta de desempenho do KeyCDN, bem como o teste de velocidade do SolveDNS, e tiramos a média. As velocidades foram medidas a partir de vários locais em todo o mundo. Como você pode ver, tirando o Cloudflare, os provedores de DNS gratuitos são definitivamente mais lentos. É por isso que, se você levar a sério seus negócios e seu site, é altamente recomendável usar um provedor de DNS pago.

Velocidades do provedor de DNS
Velocidades do provedor de DNS

Alguns dos provedores acima também são mais rápidos do que outros em determinadas regiões, por isso é importante determinar onde você precisa de tempos rápidos de pesquisa de DNS, se regional ou globalmente. O DNSPerf é outra ferramenta mais recente de comparação de velocidade do DNS que você pode usar ao escolher um provedor. Você sabia que também é possível usar o DNS da Cloudflare sem sua funcionalidade CDN?

Dica 2 – Altere os Valores de TTL para Aproveitar o Cache DNS

Felizmente, como mencionamos acima, devido ao Cache DNS, você não precisa se preocupar com a ocorrência de pesquisas em cada carregamento de página. O que importa mesmo são as primeiras solicitações. O cache DNS funciona de maneira semelhante ao modo como você armazena o seu site WordPress em cache. O DNS é servido a partir do cache até expirar. O tamanho do cache DNS é determinado pelo que eles chamam de valor de tempo de vida, ou TTL (Time to Live). Quanto maior o TTL, menor a probabilidade de o navegador precisar executar outra pesquisa de DNS.

Os valores de TTL podem ser alterados com seu registrador de domínio ou com o provedor de DNS de terceiros para melhorar os tempos de cache de DNS. É importante notar que os ISPs também armazenam o DNS em cache. Abaixo estão alguns valores TTL comuns.

  • 300 segundos = 5 minutos
  • 1800 segundos = 30 minutos
  • 3600 segundos = 1 hora
  • 43200 segundos = 12 horas
  • 86400 segundos = 24 horas
Cloudflare TTL
Cloudflare TTL

30 minutos a uma hora são tipicamente os valores de TTL mais comumente usados. No entanto, alguns também definem seu TTL muito baixo para permitir atualizações rápidas. O Cloudflare é um exemplo que tem como padrão 5 minutos se você usar o TTL automático. Também pode ser útil examinar seus diferentes tipos de registros DNS e configurá-los de acordo com a frequência com que eles mudam. Aqui está um exemplo:

  • Registros A e AAAA: Alteram com mais frequência; de 5 minutos a uma hora, geralmente é adequado
  • Registros CNAME: Quase nunca mudam; um TTL maior como 24 horas é geralmente adequado
  • Registros NS: Quase nunca mudam, um TTL maior como 24 horas é geralmente adequado
  • Registros MX: Alteram com menos frequência; um TTL alto como 12 horas geralmente é adequado
  • Registros TXT: Alteram com menos frequência; um TTL alto como 12 horas geralmente é adequado

Não há realmente nenhuma resposta certa ou errada quando se trata de TTL. Mas escolher um TTL que coincida com a frequência com que as alterações são feitas em seu site pode melhorar seus tempos de pesquisa de DNS.

Dica 3 – Reduza o Número de Domínios (hostnames)

A maneira mais fácil de reduzir as pesquisas de DNS em seu site é simplesmente se livrar de solicitações que consultam diferentes hostnames. Lembre-se, com pesquisas de DNS, não se trata do número de solicitações, mas do número de domínios diferentes. Use uma ferramenta como o Pingdom no seu site WordPress e determine se cada solicitação é realmente necessária. Como o DNS é um mapeamento de um hostname para um IP, você pode se perguntar por que as pessoas não apontam para um IP em vez disso. Isso ocorre porque um endereço IP pode mudar com frequência, enquanto os hostnames não mudam.

Dica 4 – Use Serviços Alternativos com DNS Mais Rápido

Embora a simples redução do número de domínios (hostnames) seja mais fácil de falar do que de fazer, recomendamos olhar primeiro para aqueles com tempos de pesquisa de DNS mais altos. Por exemplo, neste site testado abaixo, podemos identificar facilmente que o tempo de pesquisa de DNS para o script de rastreamento do Crazy Egg foi muito mais longo do que os outros. Isto é provavelmente devido ao fato de seu provedor de DNS não ser tão rápido quanto alguns dos outros.

Encontre tempos longos de pesquisa de DNS
Encontre tempos longos de pesquisa de DNS

Este é um cenário em que talvez você possa procurar outros provedores, como o Hotjar, que fornece o mesmo serviço, mas talvez esteja utilizando um provedor de DNS mais rápido. Pode ser muito importante ao adicionar serviços externos ao seu site WordPress que você avalie o desempenho deles.

Dica 5 – Mova e Hospede Recursos em um CDN

Uma das maneiras mais fáceis de reduzir as pesquisas de DNS é mover o máximo de recursos possível para o provedor de CDN. Se você executar a ferramenta Pingdom no seu site, poderá ver o número total de solicitações por domínio. Como você pode ver neste exemplo, 93,8% das solicitações são para a URL da CDN. Há uma solicitação para o hospedeiro e uma para o Google Analytics. Ao mover tantos recursos para o CDN quanto possível, isso reduz o número de pesquisas de DNS envolvidas, diminuindo, portanto, os tempos de carregamento.

Solicitações por domínio
Solicitações por domínio

Agora, é claro, nem sempre será possível mover tudo para o seu CDN. Sempre haverá alguns recursos ou serviços externos que exigem que você os carregue a partir de seus servidores. Mas recomendamos que você procure em seu site. Muitas vezes, vemos que os usuários do WordPress têm muitos recursos não hospedados adequadamente em seu CDN. Ao fazer isso, você também pode aproveitar melhor o HTTP/2 e a paralelização. Abaixo estão alguns recursos que muitas vezes vemos que poderiam ser melhorados:

Font Awesome

Ocasionalmente, vemos desenvolvedores de plugin e temas incluírem o Font Awesome em sites do WordPress, mas às vezes eles o programam de tal forma que, por padrão, um plugin como o CDN enabler não o capta. Nesse caso, recomendamos entrar em contato com o desenvolvedor para perguntar como você pode carregar a partir do seu CDN.

Outro cenário comum com o Font Awesome é que às vezes ele é carregado a partir do BootstrapCDN padrão (MaxCDN). Embora não haja nada de errado com isso, esse processo adiciona outra pesquisa de DNS que você não precisa. Na maioria dos casos, seria melhor carregar o Font Awesome a partir do seu próprio CDN, para que não haja outra pesquisa.

Gravatars

Se você estiver usando comentários nativos do WordPress, você pode ter uma pesquisa adicional para secure.gravatar.com para carregar os gravatars. Uma solução fácil aqui poderia ser utilizar o plugin de carregamento lento de comentários. Embora isso não reduza a pesquisa de DNS, ela será atrasada até que o usuário role a página para baixo. Então, de certo modo, você está reduzindo a pesquisa de DNS no carregamento da primeira página. Não deixe de conferir nossa postagem no blog sobre outras maneiras de acelerar os comentários.

Google Fonts

Com o Google Fonts, você tem uma solicitação de DNS extra para procurar fonts.googleapis.com para pegar o arquivo CSS. Você então tem solicitações adicionais para fonts.gstatic.com para baixar os arquivos de fontes. Quando você hospeda localmente, todas as solicitações são do mesmo domínio ou CDN e, provavelmente, você não precisará de outro arquivo CSS, pois ele estará dentro do arquivo CSS do tema WordPress. Há prós e contras de fazer isso, mas confira nosso artigo detalhado sobre como hospedar fontes localmente.

Pesquisa de DNS de fontes do Google
Pesquisa de DNS de fontes do Google

Font Awesome, Gravatars e Google Fonts são apenas alguns exemplos de maneiras através das quais você pode reduzir as pesquisas de DNS, garantindo que elas estejam sendo carregadas a partir de seu CDN. Você está atualmente carregando tudo o que é possível do seu CDN? É sempre bom dar uma olhada.

Dica 6 – Aproveite a Pré-busca de DNS

Outra dica sobre como acelerar o DNS é usar a pré-busca de DNS. Isso permite que o navegador realize pesquisas de DNS em uma página em segundo plano. Você pode fazer isso adicionando algumas linhas de código ao cabeçalho do seu site WordPress. Veja alguns exemplos abaixo.

<!-- Prefetch DNS for external assets -->
<link rel="dns-prefetch" href="//fonts.googleapis.com">
<link rel="dns-prefetch" href="//www.google-analytics.com"> 
<link rel="dns-prefetch" href="//cdn.domain.com">

A pré-busca de DNS também é suportada por todos os principais navegadores, exceto para o iOS Safari, o Opera Mini e o Navegador Android.

Suporte ao navegador de pré-busca de DNS
Suporte ao navegador de pré-busca de DNS

Ou se você estiver executando o WordPress versão 4.6 ou mais recente, convém usar resource hints. Os desenvolvedores podem usar o filtro wp_resource_hints para adicionar domínios e URLs personalizados para pré-busca de DNS, pré-conexão, pré-busca ou pré-inicialização.

Dica 7 – Adie o Carregamento de JavaScript

Se você adiar o carregamento de JavaScript, isso pode impedir que itens sejam carregados até que o documento seja totalmente carregado. Isso não reduz o número de pesquisas de DNS necessárias, mas impede que elas sejam chamadas imediatamente, o que pode acelerar a experiência do usuário. O Varvy tem uma ótima explicação sobre como adiar o JavaScript. Um exemplo que ele usa em seu site é o script do Google Analytics, já que não há motivo para carregar a dobra superior da página.

No WordPress, você pode usar um plugin gratuito como o Async JavaScript  para adiar o carregamento de JavaScript. No entanto, é importante saber que você provavelmente terá que listar os scripts que você gostaria de excluir da lista de adiar. Por quê? Porque algum JavaScript será necessário para exibir a dobra superior da página. O Async JavaScript também é totalmente compatível com o plugin Autoptimize.

Adiar o JavaScript no WordPress
Adiar o JavaScript no WordPress

Certifique-se também de ver nossa postagem aprofundado sobre como eliminar JavaScript e CSS de bloqueio de renderização.

Dica 8 – Aproveite os Registros ANAME e o Nivelamento CNAME

Há registros adicionais de provedores como o DNS Made Easy e o Cloudflare que podem ajudar a reduzir o número de solicitações no lado de saída.

Registros ANAME com o DNS Made Easy

Os registros ANAME fornecem a funcionalidade de um registro CNAME, mas no nível raiz. Por exemplo, digamos que você tenha um CNAME configurado para www.domain.com. O www deve primeiro determinar o hostname e em seguida, determinar o endereço IP. Isso requer duas solicitações. Com um registro ANAME, você pode pular uma dessas solicitações! Se configurados corretamente, esses registros também podem ser usados em conjunto com um CDN.

CNAME

ANSWER SECTION:
www.domain.com. 1799 IN CNAME domain.com.
domain.com. 1799 IN A 192.168.1.2

ANAME

ANSWER SECTION:
www.domain.com. 1799 IN A 192.168.1.2

No entanto, isso nem sempre é verdade. Se o hostname estiver na mesma zona DNS, o registro A poderá ser recuperado na mesma solicitação.

Nivelamento CNAME Com Cloudflare

Da mesma forma que os registros ANAME, o Cloudflare fornece o nivelamento automático de CNAME no ápice da zona (ou raiz) para seus clientes.

Resumo

O DNS costuma ser um fator de desempenho negligenciado, mas pode contribuir facilmente para aumentar o tempo de carregamento geral, se você não for cuidadoso. É importante entender como o DNS funciona, que existem provedores mais rápidos e mais lentos e como você pode reduzir as pesquisas para acelerar seu site.

Você tem dicas adicionais sobre como acelerar o DNS ou reduzir as pesquisas? Se você tiver, gostaríamos de ouvir sobre elas abaixo nos comentários!

Brian Jackson

Brian tem uma enorme paixão pelo WordPress, e tem utilizado há mais de uma década e até desenvolve alguns plugins premium. Brian gosta de blogs, filmes e caminhadas. Conecte-se com Brian no Twitter.