🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir a remoção de query strings que não funciona no Perfmatters

Time Full Services Time Full Services
Tipo Performance & Velocidade
Nome do erro Perfmatters não remove as query strings dos assets EN: Perfmatters Remove Query Strings not working
Severidade Informativo
Descrição A remoção de query strings do Perfmatters falha quando a opção continua desativada, o cache não foi limpo após ativar, ou os assets que ainda exibem o ?ver= são externos ou enfileirados fora dos filtros style_loader_src e script_loader_src que o Perfmatters intercepta.

O que é query strings que o Perfmatters não remove?

Query strings são o trecho de versão que o WordPress acrescenta ao fim das URLs de CSS e JS estáticos, no formato ?ver=6.5. Ele serve para invalidar o cache do navegador quando o arquivo muda, mas alguns proxies, CDNs e ferramentas de auditoria como o GTmetrix antigo recomendavam removê-lo porque tratavam URLs com query string como não cacheáveis. A opção Remove Query Strings do Perfmatters existe justamente para tirar esse ?ver= dos recursos estáticos do seu site.

O Perfmatters faz isso filtrando as URLs que passam pelos hooks style_loader_src e script_loader_src do WordPress, removendo o parâmetro ver dos assets locais. O problema aparece quando você ativa a opção e o ?ver= continua na fonte da página: na prática o Perfmatters só consegue limpar os recursos que ele enxerga por esses filtros, então assets externos, scripts enfileirados de forma incorreta ou HTML servido de um cache antigo escapam da limpeza e mantêm a query string.

Como identificar

  • No código-fonte da página, arquivos como style.min.css?ver=6.5 e jquery.min.js?ver=3.7.1 continuam com o ?ver= mesmo após ativar a opção Remove Query Strings.
  • A auditoria do GTmetrix ou de outra ferramenta segue apontando ‘Remove query strings from static resources’ depois de salvar as configurações do Perfmatters.
  • Somente alguns arquivos perderam o ?ver=: os assets do tema e do core ficaram limpos, mas os de plugins ou de um CDN ainda mostram a query string.
  • A query string sumiu ao testar em uma aba anônima, mas continua aparecendo na navegação normal porque o navegador ou um plugin de cache serve a versão antiga do HTML.
  • Recursos de terceiros, como Google Fonts ou um pixel externo, mantêm parâmetros na URL e seguem listados na auditoria mesmo com a opção ativa.
Antes de começar: Antes de editar o functions.php, criar um mu-plugin ou desativar funções de outro plugin de cache em produção, faça um backup dos arquivos e do banco de dados ou aplique a mudança primeiro em um ambiente de staging, para reverter caso algum asset deixe de carregar.

Como prevenir

  • Centralize a remoção de query strings em um único plugin de performance e nunca ative a mesma função no Perfmatters e no WP Rocket ao mesmo tempo, evitando conflito na ordem dos filtros.
  • Hospede recursos de terceiros localmente quando possível, como as fontes do Google pela própria opção Local Google Fonts do Perfmatters, para que esses assets passem a ser tratados como locais.
  • Adote o hábito de limpar o cache do plugin e da CDN sempre que alterar qualquer configuração de otimização, para que o HTML servido reflita a mudança na hora.
  • Audite a página em aba anônima após cada ajuste de performance, conferindo a fonte para garantir que os assets locais saem sem o ?ver= e que nada de essencial parou de carregar.

Causa

  • A opção Remove Query Strings está desmarcada em Perfmatters, Options, aba General, ou as alterações foram feitas mas o botão Save Changes não foi clicado, então o filtro nunca chegou a rodar.
  • Um plugin de cache de página, como o WP Rocket, ou o cache da CDN está servindo um HTML gerado antes de você ativar a opção, então a página entregue ainda contém o ?ver= antigo até o cache ser limpo.
  • Os arquivos que ainda exibem a query string são externos ao site (Google Fonts, um pixel ou um script de CDN de terceiros): o Perfmatters atua nos filtros style_loader_src e script_loader_src de assets locais e não reescreve URLs de domínios externos.
  • Um plugin ou tema imprime o CSS ou o JS direto no HTML com a tag escrita à mão, sem passar pela fila do wp_enqueue_style e wp_enqueue_script, de modo que a URL nunca atravessa o filtro que o Perfmatters usa para remover o ver.
  • Outro plugin de performance reaplica a versão ao asset depois do Perfmatters, ou a opção Remove Query Strings do próprio WP Rocket está ativa em paralelo, gerando comportamento conflitante na ordem dos filtros.

Como resolver

  1. Confirme que a opção está ativa e salva: Abra as configurações do Perfmatters e garanta que a opção Remove Query Strings esteja marcada na aba General, depois clique em Save Changes. Sem salvar, o filtro que remove o ver não é registrado e nada muda na fonte da página.
    Painel WP -> Settings -> Perfmatters -> Options -> General
    Marque a opção 'Remove Query Strings'
    Clique em 'Save Changes' no rodapé da aba
  2. Limpe todo o cache e teste em aba anônima: Limpe o cache do seu plugin de cache, da CDN e do navegador, pois o HTML servido pode ter sido gerado antes da mudança e ainda conter o ?ver=. Em seguida abra a página em uma aba anônima e veja o código-fonte para confirmar se a query string saiu.
    Limpe o cache do plugin de página (ex.: WP Rocket -> Clear Cache)
    Faça purge do cache da CDN (ex.: Cloudflare -> Purge Everything)
    Abra a página em aba anônima e use Ctrl+U para ver a fonte
  3. Separe assets locais de assets externos: Olhe na fonte da página quais URLs ainda têm ?ver= e veja o domínio de cada uma. Se forem de domínios externos como fonts.googleapis.com ou de uma CDN de terceiros, o Perfmatters não reescreve essas URLs por design: a limpeza vale para os recursos locais que passam pelos filtros de enfileiramento do WordPress.
    No código-fonte, identifique as URLs que ainda têm '?ver='
    Compare o domínio: local (seu site) ou externo (terceiros)
    Para os externos, trate a fonte (ex.: hospedar fontes localmente) em vez de esperar a limpeza
  4. Verifique conflito com outro plugin de performance: Se o WP Rocket ou outro plugin de otimização também tiver a remoção de query strings ou a versão de assets ativa, desligue a função duplicada em um deles para evitar que um reaplique o ver depois do outro. Centralize a remoção em um único plugin e recarregue a página para testar.
    Painel WP -> WP Rocket -> File Optimization (ou plugin equivalente)
    Desative a remoção de query strings duplicada em um dos plugins
    Limpe o cache e recarregue a página para confirmar
  5. Force a remoção via filtro para assets teimosos: Para os recursos locais que ainda escapam, adicione um filtro próprio nos hooks style_loader_src e script_loader_src para remover o parâmetro ver, complementando o Perfmatters. Coloque o código em um plugin de site específico ou no functions.php do tema filho.
    Edite o functions.php do tema filho ou um mu-plugin
    Adicione o filtro de remoção do parâmetro 'ver' (ver bloco de código abaixo)
    Salve, limpe o cache e confira a fonte da página
PHP
<?php
/**
 * Remove o parametro ?ver= dos assets locais que escapam do Perfmatters.
 * Cole em um mu-plugin ou no functions.php do tema filho.
 */
add_filter( 'style_loader_src', 'full_remove_query_strings', 15 );
add_filter( 'script_loader_src', 'full_remove_query_strings', 15 );
function full_remove_query_strings( $src ) {
    if ( ! $src ) {
        return $src;
    }
    // So mexe em URLs do proprio site: assets externos ficam intactos.
    if ( strpos( $src, home_url() ) !== false && strpos( $src, '?ver=' ) !== false ) {
        $src = remove_query_arg( 'ver', $src );
    }
    return $src;
}

Perguntas frequentes

Ativei a opção mas o ?ver= continua aparecendo, por quê
Quase sempre é cache. O HTML entregue foi gerado antes de você ativar a opção e ainda traz o ?ver= antigo. Limpe o cache do plugin de página, da CDN e do navegador, depois confira a fonte em uma aba anônima para ver o resultado real.
Por que só alguns arquivos perderam a query string
O Perfmatters remove o ver dos assets locais que passam pelos filtros style_loader_src e script_loader_src do WordPress. Arquivos externos, de uma CDN de terceiros ou impressos direto no HTML sem enfileiramento não atravessam esse filtro e mantêm a query string.
O Perfmatters remove query strings de recursos externos como Google Fonts
Não. A limpeza vale para recursos locais do seu site. Para fontes do Google, o caminho é hospedá-las localmente usando a opção Local Google Fonts do Perfmatters, que passa a servir o arquivo do seu domínio sem os parâmetros externos.
Remover query strings melhora mesmo a velocidade do site
O ganho hoje é pequeno. A recomendação vem de ferramentas antigas que tratavam URLs com query string como não cacheáveis, mas CDNs modernas cacheiam essas URLs normalmente. Vale mais para zerar o aviso da auditoria do que por impacto real de carregamento.
Onde fica a opção Remove Query Strings no Perfmatters
Em Settings, Perfmatters, Options, na aba General. Marque a caixa Remove Query Strings e clique em Save Changes no rodapé. Sem salvar, o filtro não é registrado e a query string permanece na fonte da página.
Posso usar Remove Query Strings no Perfmatters e no WP Rocket juntos
Não é recomendado. Ativar a mesma função nos dois pode fazer um plugin reaplicar a versão depois do outro, gerando comportamento inconsistente. Escolha um único plugin para essa tarefa e desative a opção duplicada no outro.
Como remover o ?ver= de um asset que continua teimoso
Se for um recurso local que escapa do Perfmatters, adicione um filtro próprio nos hooks style_loader_src e script_loader_src para tirar o parâmetro ver, num mu-plugin ou no functions.php do tema filho. Depois limpe o cache e confira a fonte.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes