Uma CDN à frente de uma loja ou área de membros: o que nunca pode ficar em cache

Velocidade, Cache e CDN·· 2 visualizações· 4 min de leitura

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.
5 Faça uma compra de teste completa, com o meio de pagamento real, e confirme que a encomenda passa a paga: loja online com pagamentos locais.
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

VEJA TAMBÉM

Regras de cache para um WordPress, sem esconder o painel

O carrinho do WooCommerce esvazia-se sozinho ou mostra artigos de outra pessoa

Erros na finalização da compra no WooCommerce: onde procurar

Loja online com pagamentos locais: WooCommerce e receber o dinheiro

Cabeçalhos de cache explicados: Cache-Control, Expires, ETag e como uma CDN os lê

LiteSpeed Cache no WordPress: as primeiras definições

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
Esta resposta foi útil? A sua resposta ajuda-nos a melhorar este artigo.