Como configurar cache fastcgi e Redis para cache de objetos otimizado para WordPress

Como configurar cache fastcgi e Redis para cahe de objetos no Nginx para WordPress

Essa é a última etapa do nosso tutorial sobre como configurar um servidor Nginx para WordPress. Agora, vamos a uma parte importante do tutorial, a velocidade do site. Neste tutorial vamos mostrar como você pode configurar o cache de objetos com Redis e o cache pelo FastCGI totalmente otimizado para o WordPress.

O que é o FastCGI?

FastCGI é uma interface entre os servidores web e os aplicativos, que combina algumas das características de desempenho dos módulos nativos do servidor web com a independência do servidor web da interface de programação CGI (Common Gateway Interface). FastCGI é uma extensão aberta para CGI que é independente de idioma e é uma arquitetura escalável. Ele fornece alto desempenho e persistência sem limitações de APIs específicas do servidor.

FastCGI funciona criando um pool de processos que executam os aplicativos dinâmicos, como PHP, Python ou Ruby. Esses processos são iniciados uma vez e permanecem em execução, evitando o custo de iniciar e encerrar um novo processo para cada requisição. O servidor web se comunica com os processos FastCGI por meio de um protocolo binário que permite o envio de parâmetros, dados e metadados entre eles.

Para usar o FastCGI, é necessário instalar o serviço de CGI no servidor web e configurar o mapeamento dos caminhos e extensões dos arquivos para o módulo FastCGI e especificar o processo alvo como o script processor. Além disso, é possível definir vários parâmetros para ajustar o comportamento e o desempenho do FastCGI, como o número máximo de requisições por processo, o número máximo de processos por pool, o tempo máximo de uma requisição e a forma de lidar com erros.

FastCGI é uma solução eficiente e flexível para produzir conteúdo dinâmico na web, pois permite usar diferentes linguagens de programação e frameworks sem depender de APIs específicas do servidor. FastCGI também oferece maior confiabilidade e estabilidade, pois isola os aplicativos do servidor web e recicla os processos que apresentam problemas.

Configurando o FastCGI para WordPress

Agora, que no tutorial anterior, inserimos os parâmetros para configurar o fastcgi agora, vamos para a configuração final. Lembre-se que é importante que você revise tudo o que fizemos aqui até agora.

Para começar, em um servidor Nginx, edite o arquivo do seu site com o comando abaixo, lembre-se de alterar o nome do domínio pelo que você utiliza ou pelo nome que você deu a este arquivo.

sudo nano /etc/nginx/sites-available/seusite.com.br

Agora, antes de todo o conteúdo, vamos precisar inserir a linha abaixo, e lembre-se pular uma linha para que o restante o conteúdo fiquei logo abaixo:

fastcgi_cache_path /home/emanuel/seusite.com.br/cache levels=1:2 keys_zone=seusite.com.br:100m inactive=60m;

Agora, ainda no mesmo arquivo, precisamos informar ao FastCGI que não armazene algumas páginas do WordPress em cache, afinal não queremos ter problemas com nosso cache. Isso deve ficar acima do primeiro bloco de localização no arquivo que ainda estamos editando.

set $skip_cache 0;

# Todas as solicitações posts devem passar pelo PHP mesmo que tenha strings
if ($request_method = POST) {
    set $skip_cache 1;
}   
if ($query_string != "") {
    set $skip_cache 1;
}   

# Desativando cache de algumas páginas para envitar problemas externos
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
    set $skip_cache 1;
}   

# Desativando cache para usuários logados e comentários
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
    set $skip_cache 1;
}

Agora, no bloco do PHP, logo abaixo da última diretiva, você deve colar o trecho abaixo:

fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
fastcgi_cache seusite.com.br;
fastcgi_cache_valid 60m;

Agora, vamos editar o arquivo padrão do Nginx com o comando abaixo:

sudo nano /etc/nginx/nginx.conf

Agora, abaixo do bloco do Gzip cole o bloco abaixo, respeitando uma linha para manter tudo organizado:

##
# Cache Settings
##

fastcgi_cache_key "$scheme$request_method$host$request_uri";
add_header Fastcgi-Cache $upstream_cache_status;

Agora, você já tem o FastCGI totalmente configurado. E deve funcionar, basta acessar o seu site pelo IP e visualizar a página inicial do seu site.

Execute os comandos abaixo e valide as configurações do Nginx e reiniciar se tudo estiver correto:

sudo nginx -t
sudo service nginx restart

Caso você queira limpar o cache execute o comando abaixo:

sudo rm -Rf /home/emanuel/seusite.com.br/cache/*

Como configurar o cache de objetos com Redis para WordPress e Nginx

Se você quer melhorar ainda mais a velocidade do seu site WordPress, vai precisar do cache de objetos.

O Redis é um banco de dados de código aberto que armazena e processa dados na memória, usando chaves e valores como estrutura básica. Ele é usado para aplicações que exigem alta performance, baixa latência e escalabilidade. O Redis suporta vários tipos de dados, como strings, hashes, listas, conjuntos, conjuntos ordenados, bitmaps, hiperlogs, índices geoespaciais e streams. Além disso, o Redis pode funcionar como um cache, um agente de mensagens e uma fila.

Neste post, vamos explicar o que é o Redis, como ele funciona e quais são os benefícios de usá-lo nas empresas. Também vamos mostrar alguns exemplos de casos de uso do Redis em diferentes setores e cenários.

O que é o Redis?

O Redis significa Remote Dictionary Server, ou seja, servidor de dicionário remoto. Ele foi criado em 2009 por Salvatore Sanfilippo, um desenvolvedor italiano que queria melhorar a escalabilidade do seu projeto de startup. O Redis é um banco de dados relacional que armazena os dados na memória do servidor, em vez de no disco rígido. Isso permite que ele acesse e manipule os dados com muito mais rapidez do que os bancos de dados tradicionais.

O Redis é um banco de dados de chave-valor, o que significa que ele usa pares de chave e valor para organizar e recuperar os dados. Cada chave é única e identifica um valor, que pode ser um dos vários tipos de dados suportados pelo Redis. Por exemplo, uma chave pode ser “nome” e o valor pode ser “Maria”. Uma chave também pode ser “produtos” e o valor pode ser uma lista de itens com seus preços.

O Redis é um banco de dados versátil, que pode ser usado para diversos fins. Ele pode ser usado como um banco de dados primário, armazenando os dados essenciais da aplicação. Ele também pode ser usado como um cache, armazenando os dados temporariamente para reduzir a carga nos bancos de dados primários e acelerar o acesso aos dados mais usados. Além disso, ele pode ser usado como um agente de mensagens, permitindo a comunicação entre diferentes processos ou aplicações. Por fim, ele pode ser usado como uma fila, gerenciando as tarefas que devem ser executadas em ordem ou em paralelo.

Como o Redis funciona?

O Redis funciona com dois modos principais: armazenamento persistente e armazenamento volátil. O armazenamento persistente significa que os dados são salvos no disco rígido do servidor periodicamente ou após cada operação. Isso garante que os dados não sejam perdidos em caso de falha do servidor ou da rede. O armazenamento volátil significa que os dados são mantidos apenas na memória do servidor e não são salvos no disco rígido. Isso oferece uma performance ainda maior, mas implica em um risco de perda dos dados em caso de falha do servidor ou da rede.

O Redis permite que o usuário escolha o modo de armazenamento mais adequado para cada caso de uso. Por exemplo, se os dados são críticos e não podem ser perdidos, o usuário pode optar pelo armazenamento persistente. Se os dados são temporários ou podem ser facilmente recuperados, o usuário pode optar pelo armazenamento volátil.

O Redis também funciona com dois modos principais: modo síncrono e modo assíncrono. O modo síncrono significa que o cliente espera a resposta do servidor antes de enviar outra solicitação. Isso garante a consistência dos dados e a ordem das operações. O modo assíncrono significa que o cliente envia várias solicitações ao servidor sem esperar a resposta. Isso oferece uma performance maior, mas implica em um risco de inconsistência dos dados e desordem das operações.

O Redis permite que o usuário escolha o modo mais adequado para cada caso de uso. Por exemplo, se as operações são dependentes entre si e precisam ser executadas em ordem, o usuário pode optar pelo modo síncrono. Se as operações são independentes entre si e podem ser executadas em paralelo, o usuário pode optar pelo modo assíncrono.

Adicionando repositório do Redis no Ubuntu 22.04

Execute o comando abaixo para adicionar o repositório:

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt update

Em seguida execute o comando abaixo para instalar o Redis e reiniciar o PHP:

sudo apt install redis-server -y
sudo service php8.2-fpm restart

Pronto! Já temos o Redis instalado e funcionando, agora no painel do WordPress busque por Redis e instale o plugin oficial, será mais fácil gerenciar tudo com ele, o plugin está neste link, você pode localizar no repositório de plugins do WordPress ou pode baixar o zip e subir no seu site.

Em seguida, vá para Configurações e depois em Redis e ative o cache de objetos! Pronto, agora o tempo de consulta ao banco de dados será reduzido.