O script da Varify não carrega corretamente no WordPress com WP Rocket
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.
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/.
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.
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.
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>
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.jsewindow.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.
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
- 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.
- Recarregue a página no separador Network com a opção "Disable cache" ativada e filtre por "varify".
- Verifique que
varify.jsé carregado a partir de app.varify.io com o estado 200 (tal como na última captura de ecrã acima). - Introduza
window.varifyna 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. Permitadata:na diretivascript-srcou 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.