A resposta curta: numa loja, ou num site com contas, a mesma página não é igual para toda a gente: o carrinho, o total, o nome no topo, às vezes o preço numa moeda. Uma CDN só pode guardar o que é igual para todos. Se guardar uma página pessoal, entrega-a ao visitante seguinte: carrinhos trocados, alguém a ver a conta de outra pessoa, ou pagamentos que nunca ficam confirmados. A regra é simples: ficheiros estáticos, sempre; páginas públicas, só com regras cuidadas; tudo o que tem sessão, nunca. Não vendemos CDN: o que aqui se explica vale para a CDN que escolher, numa conta sua, aberta directamente com esse fornecedor.
O que fica sempre fora da cache da CDN
| O quê |
Porquê |
| Carrinho, finalização de compra, página de confirmação da encomenda |
São diferentes para cada cliente. Guardadas, mostram o carrinho ou a encomenda de outra pessoa. |
| Conta do cliente, área de membros, painel de administração (no WordPress, /wp-admin/ e wp-login.php) |
Têm dados pessoais e sessões. |
| Pedidos que trazem cookie de sessão ou de carrinho |
No WordPress, wordpress_logged_in_; no WooCommerce, woocommerce_items_in_cart, woocommerce_cart_hash e wp_woocommerce_session_. Com um destes no pedido, a CDN deve passar directamente à origem. |
| Pedidos que mudam alguma coisa: envios de formulário (POST), ?add-to-cart=, chamadas AJAX (admin-ajax.php, ?wc-ajax=) |
São acções, não leituras. Uma acção guardada devolve a resposta antiga e não faz nada. |
| Endereços de retorno dos meios de pagamento e webhooks |
Têm de chegar sempre à origem: sem cache, sem desafio nem captcha, sem bloqueio por país. Senão o cliente paga e a encomenda fica pendente. |
| Pesquisa, filtros, preços por moeda ou por país |
Mudam com o visitante. Ou não se guardam, ou a chave da cache tem de incluir o que muda. |
| Páginas com formulários (contacto, comentários, entrada) |
Levam códigos de segurança que expiram. Uma cópia velha dá «a ligação expirou» ou um formulário recusado. Prazo curto, ou fora da cache. |
Como montar as regras sem partir a loja
| 1 |
Comece só pelos ficheiros estáticos (imagens, CSS, JS, tipos de letra). É o que muitas CDN fazem por omissão, e numa loja com muitas fotografias é onde está a maior parte do ganho: imagens de produto para uma loja rápida.
|
|
| 2 |
Se quiser guardar também o HTML, crie a regra só para as páginas públicas (início, categorias, produtos), com passagem directa à origem quando o pedido traz um cookie de sessão ou de carrinho, e exclusões explícitas para os caminhos da tabela. A forma de escrever estas regras é diferente em cada CDN: siga a documentação do seu fornecedor.
|
|
| 3 |
Confirme os cabeçalhos da origem: as páginas pessoais devem sair com Cache-Control: private, no-store ou equivalente. O WooCommerce e o plugin de cache costumam tratar disso; confirme com curl -sI, como em cabeçalhos de cache explicados.
|
|
| 4 |
Teste com dois navegadores: num, ponha um produto no carrinho; no outro, numa janela privada, abra o carrinho: tem de estar vazio. Inicie sessão no primeiro e confirme que o segundo não vê o seu nome.
|
|
| 6 |
Repita estes testes sempre que mudar uma regra na CDN ou o plugin de cache.
|
|
|
Uma regra «guardar tudo» sem exclusões é o erro mais grave que se pode fazer numa loja. Se aconteceu e alguém viu dados de outra pessoa: desligue a regra, purgue a CDN inteira, limpe a cache do site, e só depois volte a criar a regra com as exclusões. Sintomas parecidos sem CDN estão em o carrinho do WooCommerce esvazia-se ou mostra artigos de outra pessoa.
|
|
Na dúvida, não guarde HTML na CDN. Numa loja, a cache de páginas do servidor faz esse trabalho e já sabe distinguir quem tem carrinho de quem não tem (LiteSpeed Cache: as primeiras definições). Deixe à CDN os ficheiros estáticos e a protecção.
|
|
A loja começou a portar-se mal depois de ligar a CDN? Diga-nos o endereço, qual CDN usa e que regras criou.
Abrir pedido de suporte
|
PRODUTO RECOMENDADO Alojamento de sites com cPanel Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 321,75 MT/mês (plano de 3 anos, com cupão) Ver planos |