Como corrigir o DNS Prefetch que não funciona no Perfmatters no WordPress
O que é DNS Prefetch do Perfmatters não funciona?
O Perfmatters DNS prefetch é a opção do plugin que adiciona o resource hint dns-prefetch ao cabeçalho HTML do site, instruindo o navegador a resolver antecipadamente o DNS de domínios externos, como o do seu CDN, do Google Fonts ou do Google Analytics. Quando funciona, ele injeta uma tag link rel=dns-prefetch href=//domínio.com para cada domínio cadastrado, o que reduz o tempo de conexão na hora em que o recurso externo é realmente baixado. A opção fica em Perfmatters, na aba Extras, dentro do bloco Preloading, num campo de texto onde cada domínio entra em uma linha.
O problema aparece quando você cadastra os domínios mas a tag dns-prefetch simplesmente não surge no código-fonte da página. Na maioria dos casos a falha não é um bug do plugin, e sim formato de domínio fora do padrão exigido, cache antigo sendo servido depois de salvar, ou uma camada de cache de página ou de CDN que entrega um HTML gerado antes da configuração. Como o hint é apenas uma dica de desempenho, o navegador o ignora silenciosamente quando vem malformado, sem exibir nenhuma mensagem de erro visível.
Como identificar
- Você adicionou os domínios em Perfmatters, Extras, Preloading, mas ao inspecionar o código-fonte não existe nenhuma tag ‘link rel=”dns-prefetch”‘ no cabeçalho da página.
- O navegador não mostra ganho de tempo de DNS para o domínio externo, e na aba Network do DevTools a coluna ‘DNS Lookup’ continua cheia para o CDN ou para o Google Fonts.
- A tag aparece com a barra dupla incorreta, por exemplo ‘href=”https://domínio.com”‘ em vez de ‘href=”//domínio.com”‘, e o recurso continua sem ganho.
- Os domínios somem do campo Preloading depois que você clica em salvar, sinal de que o valor não foi gravado.
- A configuração funciona quando o cache está desligado, mas a tag desaparece assim que o cache de página ou da CDN volta a servir a versão antiga do HTML.
Como prevenir
- Cadastre os domínios sempre no formato //domínio.com, um por linha, e revise o campo antes de salvar para evitar protocolo ou vírgulas que invalidam o hint.
- Inclua apenas domínios externos que o site realmente consome (CDN, Google Fonts, Analytics), porque prefetch em excesso desperdiça resolução de DNS sem ganho real.
- Padronize uma rotina de limpar o cache do plugin de cache, do host e da CDN sempre que alterar configurações de Preloading do Perfmatters.
- Valide a tag dns-prefetch no código-fonte após cada mudança, em vez de confiar apenas em o domínio ter sido salvo no painel.
Causa
- O domínio foi inserido com protocolo (http:// ou https://) em vez do formato exigido pelo Perfmatters, que é apenas //domínio.com com duas barras e sem o esquema, fazendo o hint sair malformado ou não ser gerado.
- Vários domínios foram colados na mesma linha ou separados por vírgula, quando o campo Preloading do Perfmatters espera exatamente um domínio por linha.
- Um cache de página ativo (o próprio cache do host, WP Rocket, LiteSpeed Cache ou WP Super Cache) está servindo um HTML estático gerado antes de você salvar a configuração, então a tag dns-prefetch ainda não foi escrita naquele arquivo de cache.
- Uma CDN ou proxy à frente do site (por exemplo Cloudflare) entrega uma cópia em cache do HTML, e a alteração no head só aparece depois de purgar o cache da borda.
- A aba Extras do Perfmatters está com o bloco Preloading desativado, ou as configurações do plugin não foram salvas porque um erro de JavaScript no admin interrompeu o submit do formulário.
Como resolver
- Abra a área de DNS Prefetch no Perfmatters: Acesse o painel do plugin e vá até o campo correto. A opção DNS Prefetch fica dentro do bloco Preloading, na aba Extras, e não na aba de Assets. Confirme que você está editando o campo certo antes de cadastrar os domínios.
Painel WP -> Configurações -> Perfmatters Abra a aba Extras Localize o bloco Preloading e o campo DNS Prefetch - Cadastre os domínios no formato exigido: Insira um domínio por linha começando com duas barras e sem protocolo. Esse é o formato que o Perfmatters espera para gerar a tag dns-prefetch corretamente. Domínios com http ou https na frente, ou vários numa linha só, fazem o hint não ser gerado.
//fonts.googleapis.com //fonts.gstatic.com //www.google-analytics.com Salve as configurações do Perfmatters - Limpe o cache de página do site: Depois de salvar, limpe todo o cache para que um novo HTML seja gerado com a tag no head. Sem isso, o site continua servindo a versão antiga da página, gerada antes de você cadastrar os domínios.
Limpe o cache do plugin de cache ativo (WP Rocket, LiteSpeed Cache, WP Super Cache) Limpe o cache do próprio host, se houver Recarregue a página em uma aba anônima do navegador - Purgue o cache da CDN ou proxy: Se o site usa uma CDN ou proxy como o Cloudflare na frente, purgue o cache da borda. A CDN pode estar entregando uma cópia em cache do HTML sem a tag, mesmo depois de o WordPress já ter gerado a versão nova.
Acesse o painel da CDN (ex.: Cloudflare -> Caching -> Configuration) Use a opção Purge Everything ou purgue a URL específica Aguarde a propagação e recarregue a página - Confirme a tag no código-fonte da página: Verifique se o hint realmente foi escrito no cabeçalho. Abra o código-fonte e procure a tag dns-prefetch. Ela precisa apontar para o domínio no formato com duas barras. Se ela aparecer, o Perfmatters está gerando o hint como esperado.
Abra a página e use Ctrl+U para ver o código-fonte Procure por: link rel="dns-prefetch" href="//fonts.googleapis.com" Confira na aba Network do DevTools (F12) se o DNS Lookup do domínio caiu
<!-- Saida esperada no <head> quando o DNS Prefetch do Perfmatters esta ativo -->
<link rel="dns-prefetch" href="//fonts.googleapis.com">
<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link rel="dns-prefetch" href="//www.google-analytics.com">
<!-- Equivalente manual via functions.php, caso queira injetar sem o Perfmatters -->
<?php
add_filter( 'wp_resource_hints', 'full_dns_prefetch_hints', 10, 2 );
function full_dns_prefetch_hints( $hints, $relation_type ) {
if ( 'dns-prefetch' === $relation_type ) {
$hints[] = '//fonts.googleapis.com';
$hints[] = '//fonts.gstatic.com';
$hints[] = '//www.google-analytics.com';
}
return $hints;
}














