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

Velocidade, Cache e CDN·· 70 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: arquivos 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 diretamente 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 diretamente à origem.
Pedidos que mudam alguma coisa: envios de formulário (POST), ?add-to-cart=, chamadas AJAX (admin-ajax.php, ?wc-ajax=) São ações, não leituras. Uma ação guardada devolve a resposta antiga e não faz nada.
Endereços de retorno dos meios de pagamento e webhooks Têm que 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 que incluir o que muda.
Páginas com formulários (contato, comentários, entrada) Levam códigos de segurança que expiram. Uma cópia velha dá «o link expirou» ou um formulário recusado. Prazo curto, ou fora da cache.

Como montar as regras sem partir a loja

1 Comece só pelos arquivos estáticos (imagens, CSS, JS, tipos de letra). É o que muitas CDN fazem por padrã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 direta à 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 que estar vazio. Faça login 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 configurações). Deixe à CDN os arquivos estáticos e a proteçã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 configuraçõ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 $6.60/mês (plano de 3 anos, com cupom)

Ver planos
Esta resposta foi útil? Sua resposta nos ajuda a melhorar este artigo.