Cache de página inteira – a necessidade de velocidade

Publicados: 2020-10-02
speed - Full-Page Caching - The Need For Speed -

O cache de sites e o cache de página inteira são técnicas para acelerar o tempo de carregamento dos sites. É uma prática muito comum que é usada em quase todos os lugares por causa dos enormes ganhos que traz para o desempenho do site. O cache funciona tornando o servidor web muito mais eficiente em seu trabalho. O cache de página inteira é uma forma mais avançada de cache, portanto, para entender o cache de página inteira, vamos começar com o cache normal e construir a partir daí.

Joe's Auto-Parts Shop – Um site estático

1 - Full-Page Caching - The Need For Speed -

Imagina Jo. Ele é um cara que possui e administra um grande armazém cheio de peças de carros. Na frente do armazém há um balcão onde os clientes chegam para comprar suas peças. Quando um cliente chega para comprar algumas peças a transação segue este procedimento:

  1. O cliente entrega a Joe uma lista de peças do carro.
  2. Joe pega a 1ª parte e a coloca no balcão.
  3. Joe pega a 2ª parte e a coloca no balcão.
  4. E assim sucessivamente até o final da lista.
  5. O cliente paga e vai embora.

Então, como isso se aplica a um site estático?

Um site estático é aquele que não usa nenhum banco de dados, scripts PHP ou qualquer outro programa. Pense em um site simples que contém apenas páginas HTML e imagens. Joe e seu armazém representam as partes deste site simples assim:

  • O armazém é o servidor físico.
  • Joe é o software do servidor web, por exemplo, Apache
  • As peças do carro são os arquivos que compõem um site, por exemplo, imagens e arquivos HTML.

O procedimento para servir este site simples é:

  1. Um navegador solicita uma página da Web do Apache em execução no servidor.
  2. O Apache lê o primeiro arquivo do disco e o envia para o navegador.
  3. O Apache lê o segundo arquivo do disco e o envia para o navegador.
  4. E assim sucessivamente até pegar tudo.
  5. O navegador exibe a página da Web concluída.

Essa configuração funciona bem para sites pequenos, mas falha rapidamente sob pressão.

Joe fica ocupado - o armazenamento em cache salva o dia

2 - Full-Page Caching - The Need For Speed -

O sistema de Joe funciona bem até ele começar a ficar ocupado. Tão ocupado que ele passa a maior parte do tempo andando do balcão para o armazém e não consegue acompanhar todos os novos clientes.

Joe poderia comprar um depósito extra e contratar outra pessoa para trabalhar lá para atender à demanda extra. Mas isso é caro e não maximiza os recursos que ele já possui. Em vez disso, Joe pensa em como poderia tornar seu processo mais eficiente no armazém que possui.

Joe percebe que 90% das peças que ele está buscando para os clientes são apenas 10. Então ele decide manter essas 10 peças debaixo do balcão, onde ele pode pegá-las imediatamente quando alguém pedir. Ele agora pode atender a maioria dos pedidos dos clientes diretamente do balcão sem precisar ir ao armazém. Isso é muito mais rápido.

O cache faz algo muito semelhante em um servidor web. Assim como Joe volta ao armazém, a ação mais lenta ao servir arquivos estáticos é carregar o arquivo do dispositivo de armazenamento. O que o cache faz é manter os arquivos solicitados com mais frequência na RAM, onde eles podem ser acessados ​​milhares de vezes mais rápido do que lê-los do armazenamento.

Esse tipo de cache funciona muito bem para imagens e outros arquivos estáticos, mas o WordPress é um site dinâmico com scripts PHP e banco de dados.

Insira o cache de página inteira.

A vida de Joe fica complicada – PHP, bancos de dados e cache

joe - Full-Page Caching - The Need For Speed -

Uma nova oficina da Toyota abre na mesma cidade que Joe e eles usam Joe para fornecer as peças de reposição. Isso é ótimo para Joe, exceto por um problema, a Toyota só pede peças pelo número de peça da Toyota. Eles dão a Joe um catálogo enorme para que ele possa procurar os números de peças da Toyota e combiná-los com as peças em seu depósito sempre que receber um pedido deles.

Mas isso torna Joe lento novamente.

Sempre que ele precisa procurar a peça da Toyota no catálogo, leva muito tempo. Mesmo que seja uma das peças debaixo do balcão, ele não pode simplesmente pegá-la porque primeiro precisa procurar o número da peça Toyota no catálogo. Seu antigo sistema de manter as 10 peças mais solicitadas sob o balcão ainda está ajudando, mas as novas pesquisas de catálogo agora são o grande gargalo.

Joe pensa sobre isso novamente e apresenta uma solução. Ele percebe que a maioria dos pedidos da Toyota são apenas um de um pequeno grupo. Então ele escreve uma folha de dicas com os números de peças mais comuns da Toyota e suas peças correspondentes e a cola na bancada.

Agora ele não precisa usar o catálogo para a maioria dos pedidos da Toyota, ele pode dar uma olhada na folha de dicas e converter o número da peça Toyota quase instantaneamente em uma peça que ele pode buscar.

Sites WordPress têm um problema semelhante ao Joe. O WordPress cria todas as páginas da Web quando solicitada pelo navegador. As páginas HTML que seu navegador carrega não existem até que você as solicite ao WordPress.

É assim que o WordPress cria uma página do seu site:

  1. Um navegador solicita uma página da Web do WordPress.
  2. Um script PHP aceita a solicitação e consulta o banco de dados sobre o que ele precisa para construir a página.
  3. O banco de dados consulta e retorna todas as informações para o processo PHP.
  4. O script PHP constrói a página com essa informação e a envia para o navegador.

Isso é muito trabalho e é a razão pela qual os sites WordPress não armazenados em cache precisam muitas vezes mais recursos de computador do que sites estáticos.

Assim como Joe, seu site WordPress recebe solicitações para as mesmas páginas com muita frequência, como a página de destino do seu site, pois essa página é atendida toda vez que um novo visitante chega. Em uma configuração sem cache, o WordPress precisa processar essa solicitação com scripts PHP e fazer consultas de banco de dados para todos os visitantes, mesmo que crie exatamente a mesma página todas as vezes.

Isso faz com que uma grande quantidade de trabalho duplicado.

O cache de página inteira resolve esse problema. Ele percebe que uma determinada solicitação e a página que é gerada são sempre as mesmas, então ele armazena em cache uma cópia da página na RAM. Ele também mantém uma folha de dicas das solicitações que criaram essas páginas para quando um visitante solicitar uma página gerada antes de ser veiculada diretamente da RAM, em vez de recriá-la.

Isso reduz significativamente a carga de trabalho do servidor da Web, ignorando muitos processos PHP e pesquisas de banco de dados e servindo páginas geradas anteriormente diretamente da RAM. Isso pode fornecer um site WordPress dinâmico que é quase tão eficiente quanto um site estático.

O cache e o cache de página inteira são tecnologias excelentes que aproveitam os recursos do seu servidor da Web para maximizar a eficiência do seu servidor da Web e fornecer um site WordPress ágil.