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

Imagens, PHP e outros ganhos de velocidade

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

Objetivo de aprendizagem: Após esta lição, será capaz de aplicar os maiores ganhos de velocidade restantes e medir o seu efeito.

Conceitos-chave: otimização de imagens, WebP e AVIF, lazy loading, a imagem LCP, fetchpriority, versão de PHP, limpeza da base de dados (revisões, transients, autoload), WP-Cron, cron real, DISABLE_WP_CRON, tipos de letra externos, Heartbeat

Trabalhe pela ordem certa

Depois de uma cache de página (lição 6.2), estes são os ganhos que mais compensam, mais ou menos por ordem de esforço face ao efeito:

  1. imagens em ordem;
  2. uma versão atual de PHP;
  3. menos elementos externos e plugins pesados;
  4. uma base de dados organizada;
  5. tarefas agendadas num cron real.

Meça antes e depois de cada passo (lição 6.1), caso contrário não saberá o que ajudou. E faça uma coisa de cada vez.

Imagens: o maior ganho no navegador

Na maioria das páginas, as imagens são a maior parte do que um visitante transfere. O que aprendeu na lição 4.4 compensa aqui:

  • Dimensão correta: não carregue imagens maiores do que o necessário e deixe o WordPress oferecer formatos mais pequenos através de srcset.
  • Compressão e formato: o WebP é geralmente bastante mais pequeno do que o JPEG com qualidade equivalente; o AVIF é muitas vezes ainda mais pequeno. Um plugin pode converter imagens existentes e fornecer a versão mais pequena aos navegadores que a suportam. Verifique se a conversão acontece no seu próprio servidor ou num serviço externo.
  • Lazy loading, mas não para tudo. O WordPress atribui automaticamente loading="lazy" às imagens, exceto à primeira imagem grande no topo. Essa imagem é frequentemente o elemento LCP (lição 6.1): o maior bloco de conteúdo que o visitante vê em primeiro lugar. Se essa imagem for carregada de forma lazy, o navegador adia precisamente o seu carregamento e o seu LCP piora. Por isso, o WordPress atribui muitas vezes fetchpriority="high" à candidata a LCP, para que o navegador a obtenha em primeiro lugar.
<img src="hero-1536x864.webp" width="1536" height="864"
     fetchpriority="high" alt="Oficina com bicicletas enfileiradas">
<img src="team-768x512.webp" width="768" height="512"
     loading="lazy" alt="A equipa em frente à loja">

Uma armadilha: alguns temas, criadores de páginas e plugins de otimização aplicam lazy loading também à primeira imagem, ou carregam a imagem grande como fundo via CSS (que é detetada mais tarde). No PageSpeed Insights, na secção LCP, consegue ver qual é o elemento e se está a ser carregado de forma lazy.

PHP: velocidade gratuita

Cada nova versão principal do PHP é mais rápida do que a anterior, e os sites WordPress beneficiam disso diretamente, sem alterar nada no seu site. Além disso, as versões antigas deixam de receber atualizações de segurança (lição 8.4). Ao mudar de versão, verifique se os seus plugins e o seu tema suportam a nova versão, e faça-o de preferência primeiro num ambiente de testes (staging).

Nas definições de PHP, veja também:

  • OPcache: está ativo por predefinição na maioria dos alojamentos (hosting). Uma consequência: um ficheiro PHP alterado pode demorar algum tempo até o PHP utilizar a nova versão.
  • memory_limit: demasiado baixo causa erros em páginas pesadas; demasiado alto não torna o seu site mais rápido.

Elementos externos e plugins pesados

Cada elemento de outra parte é uma ligação extra e um tempo de espera extra: tipos de letra de um serviço externo, um vídeo incorporado, um widget de chat, códigos de medição, botões de redes sociais, um mapa. Perguntas a fazer sobre cada elemento:

  • É necessário? Um vídeo que quase ninguém reproduz pode também ser uma imagem com uma ligação.
  • Pode ser local? Os tipos de letra podem normalmente ser colocados no seu próprio servidor (com um plugin ou através do theme.json num tema de blocos). Isso poupa uma ligação e é melhor para a sua privacidade (lição 9.3).
  • Pode ser mais tarde? Um widget de chat ou um vídeo pode só carregar após um clique.

No caso dos plugins, ajuda medir com X-Ray (em alojamento com CloudLinux) ou com um plugin como o Query Monitor (ativar temporariamente, visível apenas para administradores). Estes mostram qual o plugin que consome mais consultas à base de dados ou tempo.

Limpar a base de dados

Uma base de dados cresce com coisas que não vê:

  • Revisões (lição 4.1): cada versão guardada de cada página. Limite-as com WP_POST_REVISIONS e limpe as antigas.
  • Comentários de spam e no lixo, e artigos no lixo.
  • Transients: dados temporários de plugins em wp_options, que por vezes não são limpos.
  • Autoload: as opções em wp_options com autoload ativo são carregadas de uma só vez em cada pedido. Plugins que já removeu há muito tempo deixam por vezes grandes quantidades de dados para trás. O Diagnóstico do site (lição 5.4) avisa quando os dados de autoload são muito grandes.
  • Tabelas de registo (log) de plugins (estatísticas, registos de segurança, registos de e-mail) que nunca são esvaziadas.

A limpeza pode ser feita com um plugin de limpeza, com WP-CLI (wp transient delete --expired, wp post delete $(wp post list --post_type=revision --format=ids) --force), ou com a função de otimização do phpMyAdmin para as próprias tabelas. Faça sempre primeiro uma cópia de segurança. Não remova nada que não saiba o que é.

Tarefas agendadas: WP-Cron

O WordPress tem tarefas que precisam de ser executadas num determinado momento: publicar um artigo agendado, verificar atualizações, fazer funcionar um plugin de cópias de segurança. Isto chama-se WP-Cron. Por predefinição, o WP-Cron não funciona por relógio, mas por visita: a cada pedido de página, o WordPress verifica se há uma tarefa pronta. Duas desvantagens:

  • Com poucos visitantes, as tarefas executam-se demasiado tarde (um artigo agendado só aparece na primeira visita seguinte).
  • Com muitos visitantes, a verificação é feita com muita frequência, e uma tarefa pesada pode precisamente atrasar a página de um visitante.

Melhor: desative o WP-Cron nas visitas e deixe um cronjob real do servidor executá-lo a cada cinco ou dez minutos. No wp-config.php (acima de "pare de editar"):

define( 'DISABLE_WP_CRON', true );

E no ecrã de cron do seu painel de alojamento, uma tarefa, a cada 10 minutos:

*/10 * * * *  /usr/local/bin/php /home/gebruiker/domains/example.com/public_html/wp-cron.php >/dev/null 2>&1

O caminho para o PHP e para o seu site varia consoante o alojamento; consulte o manual do seu painel. Ou utilize WP-CLI: wp cron event run --due-now. Verifique depois no Diagnóstico do site que não há tarefas agendadas em atraso.

Heartbeat e o painel de administração

O painel de administração do WordPress comunica com o servidor a cada 15 a 60 segundos enquanto estiver aberto (o Heartbeat): para guardar automaticamente, para avisar que outra pessoa está a editar o mesmo artigo, e para notificações. Se deixar dez separadores com o painel de administração abertos o dia todo, isso traduz-se em milhares de pedidos. Feche os separadores que não estiver a utilizar. Alguns plugins de cache podem abrandar o Heartbeat; desativá-lo por completo não é necessário e quebra o guardar automático.

Resumo

  • Depois da cache de página: imagens, versão de PHP, elementos externos e plugins, base de dados, cron. Meça antes e depois, um passo de cada vez.
  • Lazy loading para tudo exceto a imagem grande no topo; esta deve antes receber fetchpriority="high".
  • Uma versão mais recente de PHP é velocidade gratuita, desde que os seus plugins acompanhem.
  • Limpe revisões, transients, spam e dados de autoload grandes, sempre com uma cópia de segurança.
  • Coloque o WP-Cron num cronjob real com DISABLE_WP_CRON e uma tarefa no seu painel.

Questionário

1. Porque é que a imagem grande no topo da página não deve ser carregada de forma lazy?



2. Artigos agendados aparecem por vezes com horas de atraso num site com pouco movimento. Qual é a causa e a solução?



3. O que é o "autoload" em wp_options, e porque pode tornar um site mais lento?



4. Qual é um bom argumento para colocar os tipos de letra no seu próprio servidor em vez de num serviço externo?



Exercício

Exercício A6.3: Lazy loading e formatos na página inicial do seu site. Introduza o endereço do seu site. O programa lê a página inicial e analisa as imagens: a primeira imagem grande não tem loading="lazy" (e idealmente tem fetchpriority="high"), as imagens mais abaixo têm lazy loading, e qual a proporção de imagens em WebP ou AVIF?

Exercício A6.3: Lazy loading e formatos na sua página inicial


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.

Exercício D6.3: Antes e depois. Meça uma página do seu site três vezes no PageSpeed Insights (versão móvel) e anote o LCP médio, o INP (ou o valor de laboratório Total Blocking Time se não houver dados de campo), o CLS e o TTFB do exercício A6.1. Depois, aplique uma melhoria desta lição (imagens, versão de PHP, remover um elemento externo, limpar a base de dados ou um cron real). Meça novamente três vezes e anote os novos valores. Descreva o que fez e se a diferença é maior do que a oscilação normal entre medições.

Exercício D6.3: Antes e depois

Este exercício faz você mesmo; ninguém o verifica. Assinale o que já fez e marque o exercício como concluído.




As suas marcações e notas ficam apenas neste navegador; não as enviamos para lado nenhum. Se tiver sessão iniciada, guardamos em Os meus cursos apenas que concluiu o exercício.

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…