Saltar para o conteúdo
BeoHosting
BeoHosting
Técnico

O Que É o Caching e os Tipos de Caching

BeoHosting Team··10 min de leitura de leitura
O Que É o Caching e os Tipos de Caching

O que é o caching e por que importa

O caching é uma técnica de armazenar uma cópia dos dados num local de onde podem ser obtidos mais depressa, em vez de os regenerar ou obter da fonte original de cada vez. Imagine o caching como tirar uma fotocópia de um documento que usa frequentemente, em vez de ir ao arquivo buscar o original sempre que precisa. No contexto dos sites, o caching acelera drasticamente o carregamento das páginas, reduz a carga no servidor e melhora a experiência do utilizador. Sem caching, cada pedido de página exigiria o processamento do código PHP, consultas à base de dados e a geração de HTML a partir do zero.

O caching funciona com base no princípio do armazenamento temporário dos resultados de operações dispendiosas. Quando um utilizador visita uma página pela primeira vez, o servidor gera-a por completo e guarda o resultado na cache. Todos os utilizadores seguintes recebem a versão em cache, entregue numa fração do tempo. Uma página dinâmica típica de WordPress sem cache carrega em 2 a 5 segundos, enquanto uma versão em cache da mesma página pode ser entregue em 50 a 200 milissegundos, uma melhoria de 10 a 100 vezes.

Caching do navegador

Como funciona a cache do navegador

O caching do navegador é a forma mais simples e mais próxima de caching, que acontece diretamente no dispositivo do utilizador. Quando visita um site, o navegador descarrega HTML, CSS, JavaScript, imagens e tipos de letra do servidor. A cache do navegador guarda estes ficheiros localmente, para que na próxima visita não tenha de os voltar a descarregar do servidor. É por isso que, na segunda visita, uma página carrega muito mais depressa do que na primeira vez.

Cabeçalhos de cache HTTP

O servidor controla a cache do navegador através de cabeçalhos HTTP que indicam ao navegador durante quanto tempo deve manter determinados ficheiros. O cabeçalho Cache-Control é o mais importante e pode conter diretivas como max-age, que define quantos segundos o navegador deve manter o ficheiro, no-cache, que indica ao navegador que deve verificar junto do servidor antes de usar a cache, no-store, que proíbe completamente o caching, e public ou private, que determinam se intermediários como as CDNs podem fazer cache do conteúdo.

O cabeçalho Expires é uma forma mais antiga de definir a cache, que indica a data e hora exatas em que a cache expira. O cabeçalho ETag é um identificador de versão do ficheiro que o navegador envia ao servidor para verificar se o ficheiro foi alterado. Se não foi alterado, o servidor devolve uma resposta 304 Not Modified sem conteúdo, poupando largura de banda. O cabeçalho Last-Modified funciona de forma semelhante, mas usa a data da última modificação em vez de um identificador. Na prática, utilize Cache-Control com max-age para recursos estáticos e ETag para conteúdo dinâmico.

Configuração prática

Para um caching ótimo do navegador, defina valores de max-age elevados para recursos estáticos que raramente mudam. Os ficheiros CSS e JavaScript com nomes versionados, como style.v2.css, podem ter um max-age de um ano, porque quando o conteúdo muda, altera-se o nome do ficheiro. As imagens podem ter um max-age de 30 dias a um ano, consoante a frequência com que as altera. As páginas HTML devem ter um max-age curto ou no-cache, porque o conteúdo muda mais frequentemente. No Apache, utilize a diretiva mod_expires no ficheiro htaccess e no Nginx a diretiva expires na configuração.

Caching do servidor

Opcode caching

O PHP é uma linguagem interpretada, o que significa que o código PHP é compilado para código de máquina sempre que uma página é carregada. O opcode caching elimina esta repetição ao guardar o código de máquina compilado em memória. O OPcache é um mecanismo integrado do PHP para opcode caching que vem com o PHP 5.5 e versões mais recentes. Quando o OPcache está ativo, o código PHP é compilado apenas uma vez e cada pedido seguinte usa o código previamente compilado a partir da memória. Isto pode acelerar as aplicações PHP em 2 a 5 vezes sem qualquer alteração ao código.

Full page caching

O full page caching ou page cache guarda todo o output HTML de uma página, para que o código PHP não seja executado de todo nos pedidos em cache. Esta é a forma mais eficaz de caching para o WordPress e plataformas CMS semelhantes, porque elimina todo o processamento PHP e as consultas à base de dados. O servidor limita-se a entregar um ficheiro HTML estático a partir da cache. O Nginx FastCGI cache e o Apache mod_cache são soluções ao nível do servidor, enquanto plugins de WordPress como o WP Super Cache e o W3 Total Cache implementam a page cache ao nível da aplicação.

Configuração da cache do servidor

No Nginx, a diretiva fastcgi_cache define uma zona de cache em memória, fastcgi_cache_valid define durante quanto tempo a cache é válida para diferentes códigos de estado HTTP e fastcgi_cache_key define a chave pela qual a cache é identificada, normalmente uma combinação do método do pedido, do host e do URI. É importante configurar corretamente as exceções, para que os pedidos POST, as páginas com cookies para utilizadores autenticados, as páginas de administração e as páginas com parâmetros de consulta não sejam colocados em cache. Na BeoHosting, os nossos servidores usam uma configuração Nginx otimizada com FastCGI cache para o máximo desempenho dos sites WordPress.

Object caching

O que é a object cache

A object cache guarda os resultados das consultas à base de dados e de outras operações dispendiosas numa base de dados rápida em memória, em vez de executar essas consultas de novo a cada carregamento de página. O WordPress tem um mecanismo de object cache integrado, mas por predefinição só mantém os dados durante um único pedido. Com uma solução de object cache persistente como o Redis ou o Memcached, os objetos em cache permanecem em memória entre pedidos, o que reduz drasticamente o número de consultas à base de dados.

Redis como object cache

O Redis é uma base de dados em memória que guarda os dados em RAM, com armazenamento persistente opcional em disco. Para o WordPress, o plugin Redis Object Cache liga a API de object cache do WordPress a um servidor Redis. Um site WordPress típico executa 50 a 200 consultas à base de dados por página. Com uma object cache Redis, a maioria destas consultas é eliminada, porque os resultados são lidos da memória, que é centenas de vezes mais rápida do que o disco. O Redis suporta várias estruturas de dados, incluindo strings, hashes, listas, sets e sorted sets, o que o torna extremamente flexível.

Alternativa Memcached

O Memcached é outra solução popular de object caching, mais simples do que o Redis mas suficiente para a maioria dos sites WordPress. O Memcached guarda os dados exclusivamente em memória, sem armazenamento persistente, o que significa que todos os dados em cache se perdem ao reiniciar o servidor. A vantagem do Memcached é o menor consumo de memória por chave e um desempenho muito estável sob carga elevada. Para a maioria dos sites, a escolha entre o Redis e o Memcached não fará uma diferença de desempenho percetível.

Page caching para CMS

Plugins de caching para WordPress

O ecossistema WordPress oferece muitos plugins de page caching com funcionalidades e complexidade variadas. O WP Super Cache é o plugin gratuito mais popular, que gera ficheiros HTML estáticos e os serve diretamente sem processamento PHP. O W3 Total Cache é uma solução mais abrangente que combina page cache, browser cache, object cache e integração com CDN, mas é mais complexo de configurar. O WP Rocket é um plugin premium que oferece um excelente equilíbrio entre desempenho e simplicidade, com configuração automática e otimizações avançadas.

Invalidação da cache

O maior desafio do caching é a invalidação - como e quando eliminar a cache desatualizada. Se publicar um novo artigo no blogue mas a cache mostrar a versão antiga da página inicial, os visitantes não verão o novo conteúdo. Os bons plugins de cache eliminam automaticamente os ficheiros de cache relevantes quando o conteúdo muda. Por exemplo, quando publica um novo artigo, deve eliminar a cache da página inicial, a cache da página de categoria a que o artigo pertence, as páginas de arquivo por data e o sitemap. A limpeza manual de toda a cache deve ser evitada, porque provoca uma quebra temporária de desempenho enquanto a cache é reconstruída.

CDN caching

Como funciona uma CDN

Uma Content Delivery Network ou CDN é uma rede de servidores distribuídos por todo o mundo que guarda cópias do seu site e entrega o conteúdo a partir do servidor geograficamente mais próximo do visitante. Quando um visitante de Tóquio acede ao seu site alojado num data center tier 3+ em Frankfurt/Amesterdão, sem uma CDN o pedido atravessa o oceano, acrescentando 200 a 300 milissegundos de latência. Com uma CDN, o conteúdo é entregue a partir do servidor da CDN em Tóquio ou numa região próxima, com uma latência de apenas 10 a 30 milissegundos.

Serviços de CDN populares

O serviço de CDN Cloudflare é a CDN mais popular, com um plano gratuito que inclui CDN, proteção DDoS, certificado SSL e otimizações básicas. A Cloudflare tem mais de 300 data centers em todo o mundo, incluindo localizações regionais como Lisboa e Madrid. A BunnyCDN é uma alternativa económica com pagamento por utilização e excelente desempenho. A AWS CloudFront, a Google Cloud CDN e a Azure CDN são soluções empresariais integradas com plataformas cloud. Para sites WordPress, a Cloudflare é a mais simples de configurar, com um plugin de WordPress dedicado que limpa automaticamente a cache quando o conteúdo é publicado.

Edge caching

As CDNs modernas oferecem capacidades de edge computing, em que a lógica da aplicação corre nos servidores da CDN em vez do servidor de origem. Os Cloudflare Workers, as Vercel Edge Functions e o AWS Lambda@Edge permitem executar código nas localizações de edge para personalização de conteúdo, testes A/B, redirecionamentos e autenticação, sem comunicar com o servidor de origem. O edge caching combinado com o edge computing pode entregar páginas totalmente personalizadas à velocidade de uma CDN, o que representa uma mudança revolucionária no desempenho da web.

Estratégias de caching

Padrão cache-aside

O cache-aside ou lazy loading é o padrão de caching mais comum, em que a aplicação verifica primeiro a cache à procura dos dados pedidos. Se os dados existirem na cache, isso chama-se cache hit e são devolvidos imediatamente. Se não existirem, isso é um cache miss e a aplicação obtém os dados da base de dados, guarda-os na cache e depois devolve-os ao utilizador. Este padrão é simples de implementar e funciona bem para aplicações com muitas leituras, em que os dados são lidos muito mais vezes do que são alterados.

Write-through e write-behind

O padrão write-through escreve os dados simultaneamente na cache e na base de dados, garantindo que a cache está sempre atualizada mas aumentando a latência de escrita. O padrão write-behind ou write-back escreve os dados primeiro na cache e de forma assíncrona na base de dados, reduzindo a latência de escrita mas criando o risco de perda de dados se o servidor falhar antes de os dados serem escritos na base de dados. Para a maioria das aplicações web, o cache-aside com invalidação inteligente é a melhor opção, porque equilibra o desempenho e a consistência.

Conclusão

O caching é uma técnica fundamental para o desempenho de um site, que atua em múltiplos níveis, do navegador à CDN. A cache do navegador elimina descarregamentos desnecessários de recursos estáticos, a cache do servidor acelera a geração de páginas dinâmicas, a object cache reduz a carga na base de dados, a page cache elimina o processamento PHP e a CDN cache aproxima o conteúdo dos utilizadores em todo o mundo. A combinação destas técnicas pode acelerar o seu site em 10 a 100 vezes e melhorar significativamente a experiência do utilizador. Na BeoHosting, oferecemos alojamento otimizado para desempenho com OPcache, object cache Redis e suporte para integração com CDN. Verifique a velocidade do seu site.

BeoHosting Team

10+ anos de experiência — Especialistas em alojamento web e infraestrutura

  • Web Hosting
  • WordPress Hosting
  • VPS
  • Dedicated Serveri
  • Domeni
  • SSL
  • cPanel
  • LiteSpeed
  • Linux administracija
  • DNS

Última atualização: