Ir diretamente para o conteúdo

Definições de cookies

Escolha que tipos de cookies permite. Pode alterar a sua escolha a qualquer momento em Definições de cookies, no fundo de cada página. Política de privacidade

Necessários

Sempre ativos

Necessários para iniciar sessão, manter o seu carrinho e memorizar as suas escolhas. Estão sempre ativos.

Que cookies?
  • weboke_sessie, weboke_klant, weboke_remember: a sua sessão e manter a sessão iniciada
  • weboke_basket: o seu carrinho
  • wkBtwIncl: mostrar preços com ou sem IVA
  • wok_cookies: a sua escolha de cookies, 12 meses

Mede que anúncio leva a uma visita ou encomenda, para não pagarmos por anúncios que não dão resultado.

Que cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), até 90 dias
  • OpenAI Ads, anúncios no ChatGPT
  • wok_aff: através de que parceiro chegou até nós (programa de afiliados), 60 dias

4,6

País e idioma

Cada país tem o seu próprio site, com os preços e o IVA desse país.

Ver

Velocidade e cache numa loja online

Módulo 6: Gestão e segurança · Tempo de leitura: 10 minutos

Objetivo de aprendizagem: Depois desta lição, saberá configurar a cache de uma loja WooCommerce de forma a que a loja seja rápida e as páginas pessoais nunca entrem na cache, e saberá verificá-lo através dos cabeçalhos HTTP.

Conceitos-chave: cache de páginas, exclusões (carrinho, finalização da compra, A minha conta), cookies que contornam a cache, cabeçalhos no-cache, DONOTCACHEPAGE, cache de objetos, Redis, fragmentos do carrinho, geolocalização com cache de páginas, limpeza das ações agendadas

Dois tipos de páginas

Os fundamentos da cache (cache de páginas, cache do navegador, cache de objetos, OPcache, uma CDN) estão no curso de WordPress, lição 6.2. Aí já se encontra também a regra mais importante para lojas: as páginas pessoais não podem entrar na cache de páginas. Esta lição desenvolve esse ponto.

Uma loja tem dois tipos de páginas:

TipoExemplosCache
Iguais para todospágina inicial, página da loja, categorias, páginas de produto, páginas informativasCache de páginas: sim, é aqui que está o maior ganho
Diferentes para cada visitantecarrinho, finalização da compra, A minha conta, a página de livre resolução com um cliente com sessão iniciadaCache de páginas: nunca

Se algo correr mal, nota-se de imediato: um cliente vê o carrinho de outra pessoa ou, pior, a morada de alguém na página de finalização da compra. Isso constitui também uma violação de dados pessoais na aceção do RGPD (KB 6749).

O que o WooCommerce já faz

O WooCommerce ajuda a cache de três formas, e convém conhecê-las para perceber quando algo as elimina:

  1. Constantes. No carrinho, na finalização da compra e em A minha conta, o WooCommerce define DONOTCACHEPAGE (e também as constantes para a cache de objetos e de base de dados). Muitos plugins de cache leem essa constante e ignoram então a página.
  2. Cabeçalhos HTTP. Nessas mesmas páginas, o WooCommerce envia os cabeçalhos no-cache do WordPress: Cache-Control: no-cache, must-revalidate, max-age=0, private e um Expires no passado. Um proxy ou uma CDN que respeite as regras não guarda então a página. Para utilizadores com sessão iniciada, acresce no-store.
  3. Cookies. Assim que alguém coloca algo no carrinho, o WooCommerce define cookies como woocommerce_items_in_cart, woocommerce_cart_hash e wp_woocommerce_session_.... Uma boa cache deixa de servir páginas guardadas aos visitantes com um desses cookies, mesmo nas páginas de produto, porque, por exemplo, o cesto no cabeçalho do site passa a ser diferente para cada visitante.

A documentação do WooCommerce indica para os plugins de cache: exclua o carrinho, A minha conta e a finalização da compra, bem como os cookies woocommerce_cart_hash, woocommerce_items_in_cart, wp_woocommerce_session_, woocommerce_recently_viewed e store_notice[...]. Para o Varnish, apresenta também regras para endereços com ?add-to-cart=.

Onde corre mal na prática

  • Outros endereços para as páginas da loja. Mudou o nome do carrinho para /mandje/ ou um plugin de tradução cria /de/warenkorb/. Uma cache que exclui endereços fixos como /cart não os apanha. Os plugins de cache que conhecem o WooCommerce leem as páginas a partir das configurações; uma cache no servidor ou numa CDN não o faz.
  • Uma CDN que guarda tudo em cache. Algumas regras de CDN («cache everything») ignoram os cabeçalhos HTTP. Nesse caso, exclua explicitamente as páginas da loja e os cookies indicados.
  • Um plugin que substitui os cabeçalhos. Um plugin de segurança ou de velocidade define por vezes Cache-Control: public, max-age=... em todas as páginas. Os cabeçalhos no-cache deixam então de estar presentes.
  • Uma sessão para cada visitante. Normalmente, o WooCommerce só define um cookie de sessão quando há algo no carrinho. Se um plugin ou tema iniciar uma sessão logo para cada visitante (um cookie wp_woocommerce_session_ ou PHPSESSID na primeira visita), a cache de páginas deixa de funcionar para todos e a sua loja fica lenta em períodos de grande afluência.
  • Geolocalização. Em WooCommerce > Configurações > Geral escolhe a localização predefinida de um cliente. Com a opção simples «Geo-localizar», o servidor calcula o país para cada visitante, o que, com preços por país, não é compatível com uma cache de páginas. Por isso, o WooCommerce tem a opção «Geo-localizar (com suporte para cache de páginas)», que determina o país através de um pedido adicional no navegador. Se não precisar de preços ou IVA por país antes da finalização da compra, escolha o país da loja: é a opção mais simples. Para a geolocalização, o WooCommerce descarrega periodicamente uma base de dados da MaxMind.

Num servidor LiteSpeed (como na WebOké), o plugin LiteSpeed Cache trata ele próprio das exclusões para o WooCommerce; verifique-as nas configurações de exclusão. Noutros servidores web e fornecedores de alojamento, o processo é semelhante com outro plugin de cache.

O que a cache de páginas não resolve

O carrinho e a finalização da compra são sempre gerados pelo PHP e pela base de dados. Em períodos de grande afluência (uma promoção, uma newsletter), são precisamente as páginas onde os seus clientes gastam dinheiro. Aí ajudam outras coisas:

  • Uma cache de objetos como o Redis guarda em memória o resultado das consultas à base de dados. Numa loja, com muitas páginas que não podem entrar na cache de páginas, isso traz um ganho bem maior do que num site comum. O seu alojamento tem de disponibilizar o Redis (na WebOké é possível, DA 15.7); depois ativa-o com um plugin.
  • Fragmentos do carrinho. Os temas clássicos atualizam o cesto no cabeçalho do site com um script (wc-cart-fragments) que faz um pedido adicional quando o carrinho tem produtos. Os temas de blocos modernos, com o bloco de mini-carrinho, precisam menos disso. Não carregue esses scripts em páginas onde não fazem nada.
  • Ações agendadas limpas. O WooCommerce usa o Action Scheduler para tarefas em segundo plano (lição 7.3). As ações concluídas são, por predefinição, eliminadas ao fim de um mês. Se mesmo assim a lista chegar às centenas de milhares, muitas vezes devido a uma extensão que continua a agendar algo ou a ações falhadas, as consultas à base de dados ficam mais lentas. Consulte em WooCommerce > Estado > Acções agendadas o número de ações falhadas e pendentes.
  • HPOS. As encomendas em tabelas próprias (lição 1.2) tornam a pesquisa de encomendas mais rápida do que na antiga tabela de artigos. As lojas existentes têm de fazer a mudança por si (lição 6.2 sobre cópias de segurança prévias).
  • Uma versão atual do PHP e memória suficiente (lição 7.2).

Na prática: é assim que fica no WooCommerce

Verifique-o na Theehuis Example numa janela privada com as ferramentas de programador do seu navegador (F12, separador Rede, primeiro pedido):

  1. Página inicial, carregada duas vezes: na segunda vez, um cabeçalho como x-litespeed-cache: hit ou cf-cache-status: HIT. Nenhum cookie wp_woocommerce_session_ na primeira visita.
  2. shop.example.com/winkelwagen/, carregada duas vezes: nenhum hit, e cache-control com no-cache ou private.
  3. O mesmo para a finalização da compra e A minha conta.
  4. Coloque um produto no carrinho e carregue uma página de produto: vê o seu próprio cesto, não uma versão guardada.

Resumo

  • As páginas iguais para todos vão para a cache; o carrinho, a finalização da compra e A minha conta nunca.
  • O WooCommerce define ele próprio DONOTCACHEPAGE, cabeçalhos no-cache e cookies; verifique que nada os elimina ou ignora.
  • Tenha atenção a endereços com outro nome, regras de CDN, plugins que substituem cabeçalhos, sessões para cada visitante e geolocalização.
  • O Redis, as ações agendadas limpas, o HPOS e uma boa versão do PHP ajudam onde a cache de páginas não pode atuar.
  • Teste carregando duas vezes numa janela privada e leia os cabeçalhos HTTP.

Questionário

1. Um cliente vê no carrinho produtos que não escolheu. Qual é a causa mais provável?



2. Que cabeçalho HTTP espera encontrar na página de finalização da compra de uma loja WooCommerce?



3. A sua loja não mostra preços por país, mas a localização predefinida está em «Geo-localizar». Qual é uma melhoria simples para a cache?



4. Porque é que o Redis ajuda mais numa loja do que num site informativo comum?



Exercício

Exercício A6.4: O carrinho e a finalização da compra ficam fora da cache? Introduza o endereço da sua loja e os endereços do carrinho e da página de finalização da compra (e, se quiser, de A minha conta). O programa pede a página inicial duas vezes, com 2 segundos de intervalo, sem cookies, e depois pede também cada página da loja duas vezes. Nada é colocado no carrinho e nada é encomendado. Verde se a página inicial vier da cache na segunda vez (ou for claramente mais rápida) sem definir um cookie de sessão, e se cada página da loja, na segunda vez, não tiver um acerto de cache e enviar um Cache-Control com no-cache, no-store, private ou max-age=0. Laranja se a página inicial não usar cache, ou se uma página da loja não tiver acerto de cache mas também não enviar um cabeçalho no-cache. Vermelho se houver um acerto de cache no carrinho, na finalização da compra ou em A minha conta, ou se a página inicial iniciar uma sessão WooCommerce para cada visitante.

Um visto verde significa que esta verificação está correta neste momento, não que a sua loja é segura.

Exercício A6.4: O carrinho e a finalização da compra ficam fora da cache?





O que preenche e o que encontramos não ficam guardados. O seu navegador memoriza as suas respostas e se concluiu o exercício com sucesso. Se tiver sessão iniciada, guardamos apenas que concluiu o exercício (quase) com sucesso em Os meus cursos; aí também o pode eliminar.

Para saber mais

Os passos num painel aplicam-se à WebOké; noutros fornecedores, o processo é semelhante.

Um momento…

Configurar os seus domínios

Para cada domínio, defina os servidores de nomes, a ligação ao seu alojamento e quem fica como titular.

A carregar os seus domínios…