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

Caching

Módulo 6: Velocidade · Tempo de leitura: 9 minutos

Objetivo de aprendizagem: Após esta lição, conseguirá explicar que tipos de cache existem e configurar e verificar corretamente uma cache de páginas.

Conceitos-chave: cache de páginas, cache do navegador, Cache-Control, cache de objetos, Redis, OPcache, CDN, plugin de cache, LiteSpeed Cache, exceções (sessão iniciada, carrinho de compras, finalização de compra), limpar a cache, plugins de cache duplicados

Cache: não fazer o mesmo trabalho duas vezes

Uma cache guarda o resultado de um trabalho, para que não tenha de ser repetido da próxima vez. Num site WordPress, há quatro locais onde isto acontece, do maior para o menor:

TipoO que é guardadoOndeEfeito
Cache de páginasO HTML completo de uma páginaNo servidor (ou numa CDN)O maior ganho: o PHP, os plugins e a base de dados são ignorados
Cache do navegadorFolhas de estilo, scripts, imagens, tipos de letraNo navegador do visitanteUma segunda página carrega mais rápido, porque os ficheiros já estão disponíveis
Cache de objetosResultados de pedidos à base de dadosNa memória do servidor (Redis, Memcached)Ajuda onde uma cache de páginas não pode, como em utilizadores com sessão iniciada e lojas online
OPcacheO código PHP compiladoNa memória do PHPO PHP não precisa de reler os ficheiros a cada pedido; está ativada por predefinição na maioria dos alojamentos

A cache de páginas

A lição 1.2 mostrou isto: sem cache, o WordPress recria a página inteira a cada visita. Com uma cache de páginas, o primeiro visitante gera a página, e os seguintes recebem o HTML guardado. Um TTFB de um segundo pode assim passar para algumas centésimas de segundo, e o seu plano pode suportar muito mais visitantes em simultâneo.

A forma como obtém uma cache de páginas depende do seu servidor web:

  • LiteSpeed (muito alojamento partilhado, incluindo a WebOké): o próprio servidor web tem uma cache. O plugin gratuito LiteSpeed Cache controla essa cache a partir do WordPress: que páginas podem entrar na cache, quando são limpas. Como a cache está no servidor web, o PHP nem sequer é iniciado para uma página guardada.
  • Apache ou nginx: um plugin de cache que guarda o HTML como ficheiros, como o WP Super Cache, o W3 Total Cache ou um plugin pago como o WP Rocket. Ou uma cache gerida pelo alojamento ao nível do servidor.
  • Alojamento WordPress gerido tem frequentemente uma cache própria; nesse caso, normalmente não instala um plugin de cache.

Escolha apenas um. Dois plugins de cache em simultâneo (por exemplo, LiteSpeed Cache e WP Rocket) interferem um com o outro: trabalho duplicado, páginas que não são limpas, erros estranhos. Num servidor LiteSpeed, o LiteSpeed Cache funciona com a cache do servidor web; outro plugin de cache não consegue fazer isso.

O que não pode entrar na cache

Uma cache de páginas dá a mesma versão de HTML a todos. Isto corre mal em páginas que são diferentes para cada visitante:

  • utilizadores com sessão iniciada (a barra de administração, "Boas-vindas, Lisa");
  • o carrinho de compras, a finalização de compra e A minha conta numa loja online;
  • páginas com um formulário com um código de utilização única (nonce), que expira após algum tempo;
  • páginas que mostram algo diferente com base na localização, no idioma ou num cookie.

Bons plugins de cache ignoram automaticamente os utilizadores com sessão iniciada e as páginas conhecidas do WooCommerce. Noutros plugins (uma área de membros, um sistema de reservas) tem de configurar exceções manualmente. O sinal de que algo está mal: um visitante vê o carrinho de compras de outra pessoa, ou um formulário dá "expirado" ou "pedido inválido".

Limpar: quando é que a cache está desatualizada?

Se alterar uma página, a versão guardada tem de ser removida. Os plugins de cache geralmente limpam essa página, a página inicial e os arquivos ao guardar um artigo. Numa alteração ao menu, ao tema ou a um widget, muitas vezes é necessário limpar toda a cache. Se, após uma alteração, ainda vir a versão antiga, limpe a cache (na barra de administração do plugin de cache) e verifique numa janela privada, para que a sua própria cache do navegador não interfira.

A cache do navegador

O servidor indica ao navegador, através de cabeçalhos, durante quanto tempo pode guardar um ficheiro:

cache-control: public, max-age=31536000

Isto significa: guardar durante um ano. Para folhas de estilo, scripts, tipos de letra e imagens, um período longo é perfeitamente adequado, porque o WordPress coloca um ?ver= diferente após o endereço numa nova versão, e o navegador trata-o então como um ficheiro novo. Para o próprio HTML, é habitual um período curto (ou nenhum), para que os visitantes vejam as alterações rapidamente.

Muitos alojamentos e plugins de cache tratam disto automaticamente. No exercício desta lição, irá verificar isso.

Cache de objetos e Redis

Uma cache de páginas não ajuda em utilizadores com sessão iniciada nem no carrinho de compras. Aí ajuda uma cache de objetos: o WordPress guarda o resultado de pedidos à base de dados na memória, num programa como o Redis ou o Memcached. Da próxima vez que chega o mesmo pedido, o WordPress vai buscar a resposta à memória em vez de à base de dados.

Isto é especialmente útil para lojas online, sites de membros e sites com muitos editores com sessão iniciada. Para um site informativo comum com uma cache de páginas, a diferença é pequena. Uma cache de objetos exige que o seu alojamento ofereça Redis ou Memcached; depois ativa-a com um plugin (o LiteSpeed Cache consegue fazê-lo, e também existem plugins separados).

Uma CDN

Uma CDN (content delivery network) é uma rede de servidores em muitos locais do mundo que guardam cópias dos seus ficheiros (e, por vezes, das suas páginas inteiras). Um visitante recebe-os do servidor mais próximo. Isto ajuda principalmente com visitantes distantes e com muito tráfego. Para um site europeu com visitantes europeus num servidor europeu, o ganho é pequeno. Uma CDN com proxy (como o Cloudflare) altera também o seu DNS e o seu certificado (curso de DNS, lição 7.5); não o faça sem compreender o que isso implica.

Na prática: como se apresenta num painel

Como exemplo, usamos o LiteSpeed Cache num servidor LiteSpeed. Outros plugins de cache têm definições semelhantes com nomes diferentes.

  1. Instale e ative o LiteSpeed Cache em Plugins > Novo plugin.
  2. Abra LiteSpeed Cache > Cache: "Ativar Cache" está ligado, "Cache de utilizadores com sessão iniciada" está desligado (a menos que saiba o que está a fazer).
  3. Numa loja online: verifique em Excluir se o carrinho de compras, a finalização de compra e A minha conta estão incluídos (no WooCommerce isso acontece automaticamente).
  4. Deixe as restantes opções (otimização de CSS e JavaScript, imagens) desligadas inicialmente. Ative-as uma a uma e teste após cada passo: são precisamente essas opções que por vezes quebram um tema.
  5. Verifique numa janela privada com as ferramentas de programador (F12, Rede, primeiro pedido): na segunda vez que carregar, deve aparecer x-litespeed-cache: hit.

Resumo

  • Existem quatro tipos de cache: páginas (o maior ganho), navegador, objetos e OPcache.
  • Num servidor LiteSpeed, o LiteSpeed Cache controla a cache do servidor web; em Apache ou nginx, usa outro plugin de cache. Escolha apenas um.
  • Utilizadores com sessão iniciada, carrinho de compras, finalização de compra e páginas pessoais não devem estar na cache de páginas.
  • Limpe a cache após alterações ao menu ou ao tema e verifique numa janela privada.
  • Uma cache de objetos (Redis) ajuda em lojas online e utilizadores com sessão iniciada; uma CDN ajuda sobretudo com visitantes distantes e muito tráfego.

Questionário

1. Que cache costuma dar o maior ganho de velocidade num site informativo comum?



2. Um cliente vê no seu carrinho de compras os produtos de outra pessoa. O que está provavelmente errado?



3. Por que razão não deve instalar dois plugins de cache em simultâneo?



4. Para quem é que uma cache de objetos como o Redis ajuda mais?



Exercício

Exercício A6.2: A sua cache de página funciona? Introduza o endereço do seu site. O programa pede a página inicial duas vezes, com pouco intervalo entre elas, sem cookies, e verifica na segunda vez os cabeçalhos que indicam um acerto de cache (x-litespeed-cache: hit, x-cache: HIT, cf-cache-status: HIT, um age superior a 0, ou o cabeçalho de outra cache conhecida). Depois, pede uma folha de estilo da página inicial e verifica se o navegador pode guardá-la durante pelo menos sete dias (cache-control: max-age ou expires). Anote qual cache está a utilizar.

Exercício A6.2: A sua cache de página funciona?



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.

Leitura adicional

Estes artigos descrevem os passos nos painéis da WebOké; noutros painéis funcionam de forma 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…