Pular para o conteúdo principal

O script da Varify não carrega corretamente no WordPress com WP Rocket

Última atualização em 21 de out. de 20264 min de leitura

Como reconhecer o erro​

O teu site funciona em WordPress e usa o plugin WP Rocket. O script da Varify não carrega corretamente. Os experimentos não são entregues ou só com atraso, nenhum ou muito pouco dado chega ao relatório, ou o objeto window.varify não está definido no navegador.

important

O script da Varify deve carregar sem alterações e sem atraso para que as variantes sejam entregues antes de o visitante ver a página. Por isso, não deve ser otimizado, atrasado ou colocado em cache pelo WP Rocket.

Por que isto acontece​

O WP Rocket otimiza ficheiros JavaScript de duas formas. Ambas podem afetar o script da Varify:

  • Delay JavaScript execution: Atrasa os scripts até o visitante interagir com a página. Nesse processo, o snippet inline com o ID da Varify é convertido num endereço data:text/javascript;base64. O script começa tarde demais, fazendo com que as variantes piscem ou não sejam entregues.
  • Minify / Combine JavaScript files: Descarrega scripts externos e disponibiliza uma cópia a partir do teu próprio domínio, na pasta /wp-content/cache/min/. A página carrega uma cópia em cache em vez do ficheiro atual de app.varify.io, pelo que as alterações aos teus experimentos não chegam.

Como verificar se o WP Rocket é a causa​

Com as ferramentas de programador do teu navegador (Chrome: clique com o botão direito na página, "Inspect"), podes ver de onde o script é carregado.

Passo 1: separador Elements – o snippet foi alterado?​

Abre o separador "Elements" e procura (Ctrl/Cmd + F) por "varify". Se o WP Rocket converteu o snippet inline com o ID da Varify num script com src="data:text/javascript;base64…" e o atributo data-rocket-status, o snippet foi alterado. Abaixo, varify.js é carregado a partir do teu próprio domínio em /cache/min/.

Separador Elements a mostrar o snippet da Varify convertido pelo WP Rocket

Passo 2: separador Network – de onde vem o varify.js?​

Abra a aba "Network", recarregue a página e digite "varify" no filtro. Clique no arquivo varify.js e verifique a "Request URL". O endereço correto é em app.varify.io. Se o arquivo estiver no seu próprio domínio, por exemplo em /wp-content/cache/min/1/varify.js, o WP Rocket está servindo uma cópia em cache. O valor "Age" nos cabeçalhos de resposta mostra há quanto tempo a cópia está no cache.

Aba Network com a request URL do varify.js no próprio domínio

Passo 3: Comparar sem o WP Rocket​

Adicione ?nowprocket à URL da página. Isso ignora as otimizações do WP Rocket. Se o script do Varify carregar a partir de app.varify.io lá e funcionar, o WP Rocket é a causa.

Aba Network com ?nowprocket no endereço e varify.js vindo de app.varify.io

Solução: excluir o script do Varify com data-nowprocket​

O WP Rocket exclui do atraso todo script que contenha a palavra-chave nowprocket, por exemplo como um atributo. Portanto, adicione o atributo data-nowprocket às duas tags de script do snippet do Varify: o script inline com o seu ID do Varify e o script que carrega o arquivo varify.js.

<script data-nowprocket>
window.varify = window.varify || {};
window.varify.iid = YOUR ACCOUNT ID;
</script>
<script data-nowprocket src="https://app.varify.io/varify.js"></script>
important

Copie o snippet com o seu ID pessoal da sua conta Varify (Tracking Setup) e apenas adicione o atributo data-nowprocket. Não altere mais nada no código.

Alternativa: excluir o script nas configurações do WP Rocket​

Se você não puder editar o snippet, exclua-o no WP Rocket. No WordPress, abra "Settings > WP Rocket > File Optimization" e insira estes valores:

  • Em "Delay JavaScript execution", no campo "Excluded JavaScript Files": varify.js e window.varify. A segunda entrada exclui o snippet inline.
  • Em "Minify JavaScript files", no campo "Excluded JavaScript Files" (e, se ativado, em "Combine JavaScript files"): varify.js.
  • Salve as alterações.
important

Para scripts externos, use o nome do arquivo e não o domínio. Se "Minify JavaScript files" estiver ativado, o arquivo é armazenado localmente no seu servidor, e uma entrada com app.varify.io não corresponderia mais.

Limpar o cache e verificar o resultado​

  1. Limpe a cache do WP Rocket, por exemplo com "Clear cache" na barra de administração do WordPress. Se necessário, limpe também a cache do seu hosting e do seu CDN.
  2. Recarregue a página no separador Network com a opção "Disable cache" ativada e filtre por "varify".
  3. Verifique que varify.js é carregado a partir de app.varify.io com o estado 200 (tal como na última captura de ecrã acima).
  4. Introduza window.varify na consola. Se for devolvido um objeto, o script está carregado.

Se o problema persistir​

  • Verifique se a consola mostra a mensagem Refused to load the script 'data:text/javascript;base64…'. Se sim, uma Content Security Policy do seu website está a bloquear os endereços data: que o WP Rocket cria. Permita data: na diretiva script-src ou exclua o script do Varify da otimização conforme descrito acima. O seu fornecedor de hosting pode ajudar com isto.
  • Verifique se outros plugins de otimização ou cache, um CDN ou funcionalidades do seu hosting modificam o JavaScript. Podem ter os mesmos efeitos.
  • Verifique que o snippet do Varify está incluído apenas uma vez na página.
  • Se precisar de mais ajuda, contacte a nossa equipa de suporte.

Conclusão​

Em sites WordPress com WP Rocket, o plugin frequentemente atrasa ou coloca em cache o script do Varify. Adicione o atributo data-nowprocket a ambas as tags script do snippet do Varify, ou exclua varify.js e o snippet inline no WP Rocket. Depois limpe a cache e verifique no separador Network que varify.js é carregado a partir de app.varify.io.

Artigos relacionados​