# Como corrigir a configuração de CDN entre Cloudflare e WP Rocket no WordPress

O erro de CDN entre Cloudflare e WP Rocket ocorre quando o add-on Cloudflare do WP Rocket recebe credenciais erradas, o CNAME do CDN aponta para o domínio Cloudflare ou o Rocket Loader e a minificacao da Cloudflare se sobrepoem aos arquivos otimizados, deixando o cache desatualizado ou o layout quebrado.

## O que é erro de CDN entre Cloudflare e WP Rocket?

O Cloudflare e o WP Rocket atuam em camadas diferentes do mesmo site: a Cloudflare e uma CDN e proxy reverso que serve arquivos da borda, e o WP Rocket gera o cache de página e otimiza CSS, JavaScript e imagens no WordPress. Para que conversem, o WP Rocket traz um add-on Cloudflare nativo que limpa o cache da borda sempre que o cache local e renovado. O erro de configuração aparece quando essa ponte falha: o cache da Cloudflare não e esvaziado junto com o do WP Rocket, o site mostra conteúdo antigo, ou recursos da Cloudflare reescrevem os arquivos que o WP Rocket já tinha otimizado e o layout quebra.

Segundo a documentação oficial do WP Rocket, o add-on Cloudflare exige a Global API key, o e-mail da conta e o Zone ID corretos, e funciona apenas com a Global API key. A maior fonte de problemas e o Rocket Loader da Cloudflare, um recurso que adia o carregamento de JavaScript e e descrito na própria doc como a causa mais comum de falhas. Quando o CDN CNAME do WP Rocket aponta para o domínio servido pela Cloudflare, ou quando o add-on e o plugin oficial da Cloudflare disputam a limpeza de cache, o resultado e um site que carrega assets errados ou desatualizados.

## Como identificar

- Após publicar ou editar uma página, o navegador continua exibindo a versão antiga porque o cache da Cloudflare não foi limpo junto com o do WP Rocket.
- O layout quebra com botões e scripts sem funcionar, e o console do navegador mostra erros vindos do 'rocket-loader.min.js' injetado pela Cloudflare.
- Imagens e arquivos CSS ou JS retornam 404 ou carregam de um host errado porque o campo CDN CNAME do WP Rocket aponta para o domínio já servido pela Cloudflare.
- Na aba do add-on Cloudflare, o WP Rocket exibe mensagem de credenciais invalidas ou 'Connection failed' ao tentar salvar a Global API key e o Zone ID.
- O cabeçalho de resposta mostra 'cf-cache-status: HIT' mesmo após limpar o cache do WP Rocket, indicando que a borda da Cloudflare não recebeu o purge.

**Antes de começar:** Antes de mexer no Rocket Loader, no CNAME de CDN ou na Global API key em producao, faca um backup do site e dos arquivos e, se possível, teste primeiro em staging. A Global API key da acesso total a conta Cloudflare, entao trate-a como senha e nunca a exponha em logs ou capturas de tela.

## Como prevenir

- Use sempre a Global API key e o Zone ID do domínio correto no add-on Cloudflare do WP Rocket e revalide a conexão após qualquer troca de conta ou domínio.
- Mantenha o Rocket Loader da Cloudflare desligado quando o WP Rocket já gerencia o JavaScript, para evitar a causa de falha mais comum citada pela doc.
- Defina um único responsável pelo purge do cache da borda: o add-on do WP Rocket ou o plugin oficial da Cloudflare, nunca os dois disputando.
- Documente o campo CDN CNAME do projeto e so preencha quando houver um subdominio de CDN dedicado, evitando apontar para o host que já passa pela Cloudflare.

Erros relacionados

- [Como corrigir o WP Rocket que não gera cache](https://full.services/wp-fixer/corrigir-wp-rocket-nao-gera-cache/)
- [Como corrigir o erro 404 após ativar o WP Rocket](https://full.services/wp-fixer/corrigir-erro-404-apos-wp-rocket/)
- [Como corrigir o Delay JavaScript do WP Rocket que quebra funções do site](https://full.services/wp-fixer/corrigir-delay-javascript-wp-rocket/)

## Causa

- O add-on Cloudflare do WP Rocket esta configurado com um API Token em vez da Global API key, ou com o Zone ID de outro domínio; a doc oficial afirma que o add-on funciona apenas com a Global API key, o e-mail da conta e o Zone ID corretos.
- O Rocket Loader esta ligado no painel da Cloudflare e adia o JavaScript já gerenciado pelo WP Rocket, quebrando scripts; a documentação do WP Rocket aponta o Rocket Loader como a causa mais comum de problemas.
- O campo CDN CNAME na aba CDN do WP Rocket foi preenchido com o domínio que já passa pela Cloudflare, fazendo o site reescrever as URLs de assets para um host que devolve 404 ou serve arquivos duplicados.
- A opção Optimal Settings for Cloudflare não foi ativada, entao o nível de cache da Cloudflare não esta em Standard, o Rocket Loader segue ligado e o browser cache não esta em 1 ano, deixando a borda fora de sincronia com o WP Rocket.
- O add-on Cloudflare do WP Rocket e o plugin oficial da Cloudflare estão ativos ao mesmo tempo disputando o purge; com APO do plugin oficial ligado, o add-on do WP Rocket fica esmaecido e a limpeza de cache passa a ser controlada por outro fluxo.
- A minificacao Auto Minify ou o HTTP/2 Server Push da Cloudflare reescrevem CSS e JS já otimizados pelo WP Rocket; a doc do WP Rocket alerta que o Server Push e incompativel com o recurso Remove Unused CSS.

## Como resolver

1. Use a Global API key e o Zone ID corretos no add-on: Na aba de add-ons do WP Rocket, ative o add-on Cloudflare e preencha a Global API key, o e-mail da conta e o Zone ID exatos do domínio. A documentação oficial deixa claro que o add-on funciona somente com a Global API key, nunca com um API Token limitado.

```
Painel WP -> WP Rocket -> Add-ons -> ative Cloudflare
Cloudflare -> My Profile -> API Tokens -> View Global API Key
Cloudflare -> selecione o domínio -> Overview -> copie o Zone ID
Cole Global API key, e-mail da conta e Zone ID nas configurações do add-on e salve
```

2. Desligue o Rocket Loader na Cloudflare: O Rocket Loader da Cloudflare adia o JavaScript que o WP Rocket já gerencia e e descrito na doc como a causa mais comum de falhas. Desligue-o no painel da Cloudflare para parar a quebra de scripts e layout.

```
Cloudflare -> selecione o domínio -> Speed -> Optimization -> Content Optimization
Localize Rocket Loader e deixe em Off
```

3. Ative o Optimal Settings for Cloudflare no WP Rocket: Essa opção aplica de uma vez o conjunto recomendado: define o caching level da Cloudflare como Standard, desativa o Rocket Loader e ajusta o browser cache para 1 ano. Isso alinha a borda da Cloudflare com o cache do WP Rocket.

```
Painel WP -> WP Rocket -> Add-ons -> Cloudflare -> Modify options
Ative 'Optimal Settings for Cloudflare' e salve
```

4. Corrija ou esvazie o campo CDN CNAME: Na aba CDN do WP Rocket, não aponte o CNAME para o mesmo domínio que já passa pela Cloudflare. Se você não usa um subdominio de CDN dedicado, deixe o campo vazio para que os assets sejam servidos pela própria Cloudflare sem reescrita de host.

```
Painel WP -> WP Rocket -> CDN
Remova do CNAME qualquer host que já seja servido pela Cloudflare (ou deixe o campo vazio)
Salve e limpe o cache do WP Rocket
```

5. Evite o add-on e o plugin oficial da Cloudflare ao mesmo tempo: Rodar o add-on Cloudflare do WP Rocket junto com o plugin oficial da Cloudflare faz os dois disputarem o purge. Com APO do plugin oficial ligado, o add-on do WP Rocket fica esmaecido. Escolha um único responsável pela limpeza de cache da borda.

```
Painel WP -> Plugins -> verifique se o plugin oficial 'Cloudflare' esta ativo
Mantenha apenas um responsável pelo purge: o add-on do WP Rocket OU o plugin oficial da Cloudflare
Limpe o cache do WP Rocket e confirme que o 'cf-cache-status' renova após a publicação
```


## Código

```php
<?php
// wp-config.php: define as credenciais da Cloudflare para o add-on do WP Rocket.
// Mantenha estes valores fora do controle de versao (a Global API key da acesso total a conta).
define( 'WP_ROCKET_CF_API_KEY', 'sua_global_api_key_aqui' );
define( 'WP_ROCKET_CF_EMAIL', 'email-da-conta@exemplo.com' );
define( 'WP_ROCKET_CF_ZONE_ID', 'seu_zone_id_aqui' );

// Forca o nivel de cache da Cloudflare para o recomendado (mesmo efeito do Optimal Settings).
add_filter( 'pre_get_rocket_option_cloudflare_auto_settings', '__return_zero' );
add_filter( 'rocket_cloudflare_cache_level', function () {
    return 'aggressive'; // 'aggressive' corresponde ao caching level Standard na Cloudflare
} );
```

## Perguntas frequentes

### Por que o site mostra conteúdo antigo mesmo após limpar o cache do WP Rocket

Porque o cache da Cloudflare na borda não foi esvaziado junto. Ative o add-on Cloudflare do WP Rocket com a Global API key e o Zone ID corretos para que o purge do WP Rocket também limpe a Cloudflare a cada renovacao de cache.

### Preciso de API Token ou da Global API key para o add-on do WP Rocket

Da Global API key. A documentação oficial do WP Rocket afirma que o add-on Cloudflare funciona apenas com a Global API key, junto com o e-mail da conta e o Zone ID. Um API Token limitado não habilita a integração.

### O Rocket Loader da Cloudflare e o mesmo que o WP Rocket

Não. O Rocket Loader e um recurso da Cloudflare que adia o JavaScript e não tem relacao com o plugin WP Rocket. A doc do WP Rocket o aponta como a causa mais comum de problemas, entao mantenha-o desligado quando usar o WP Rocket.

### O que a opção Optimal Settings for Cloudflare faz

Ela aplica de uma vez o conjunto recomendado: define o caching level da Cloudflare como Standard, desativa o Rocket Loader e ajusta o browser cache para 1 ano. Isso alinha a configuração da borda com o cache gerado pelo WP Rocket.

### Devo preencher o campo CDN CNAME do WP Rocket quando uso a Cloudflare

Não, a menos que você tenha um subdominio de CDN dedicado. Se o domínio já passa pela Cloudflare, deixar o CNAME vazio evita que o WP Rocket reescreva as URLs de assets para um host que devolve 404 ou serve arquivos duplicados.

### Posso usar o add-on do WP Rocket e o plugin oficial da Cloudflare juntos

Não e recomendado, pois os dois disputam a limpeza de cache. Com o APO do plugin oficial ligado, o add-on do WP Rocket fica esmaecido. Escolha um único responsável pelo purge da borda para evitar cache fora de sincronia.

### A minificacao da Cloudflare conflita com o WP Rocket

Pode conflitar. O Auto Minify e o HTTP/2 Server Push da Cloudflare reescrevem CSS e JS já otimizados pelo WP Rocket, e a doc alerta que o Server Push e incompativel com o recurso Remove Unused CSS. Deixe a otimização a cargo de uma camada so.

### Como confirmo que o purge da Cloudflare esta funcionando

Limpe o cache do WP Rocket, recarregue a página e veja o cabeçalho de resposta. Se o 'cf-cache-status' alternar para MISS logo após o purge e depois voltar a HIT, a borda esta sendo esvaziada corretamente junto com o WP Rocket.

**Fonte:** [WP Rocket Knowledge Base - Using WP Rocket With Cloudflare](https://docs.wp-rocket.me/article/18-using-wp-rocket-with-cloudflare/)
