A indexação eficiente de páginas web é essencial para a visibilidade nos mecanismos de busca. No entanto, sites com carregamento onde há grande dependência de renderização de javascript podem ter dificuldades para serem corretamente rastreados.
O Sir Cache resolve esse problema ao gerar versões estáticas das páginas, garantindo respostas rápidas e melhor desempenho na indexação através da Renderização Dinâmica (prática recomendada em compliance do Google).
Sua implementação é flexível, podendo ser integrada a CDNs como Cloudflare e CloudFront ou configurada diretamente em servidores web como Apache e Nginx. A melhor e mais eficiente integração é no nível do CDN.
Este guia apresenta os requisitos, passos de configuração e exemplos práticos para a instalação do Sir Cache na sua infraestrutura, que apresenta modelos de instalação em diferentes CDNs, mas também é possível adaptar a lógica para outros formatos conforme necessário.
Instalação
Premissas
Para instalar o Sir Cache em seu site, você deve basicamente realizar estas tarefas:
1. Ser capaz de detectar os acessos que recebe do Googlebot-mobile
2. Se uma chamada vier do Googlebot-mobile, ser capaz de modificar o HOST de forma transparente (alterar o domínio de fato chamado)
3. Ser capaz de criar exceções para recursos que você não deseja servir estaticamente (isso permite manter os preços de produtos atualizados para o Google Shopping) ou quando o User-Agent contém um indicador especial (para evitar looping)
4. Ser capaz de incluir uma string presente em um user-agent, ou um intervalo de IP numa whitelist, se sua infraestrutura tiver um WAF.
A operação básica é resumida da seguinte forma se considerarmos que o seu site é https://www.domain.com.br/ e a sua conta Sir Cache retorna os dados para https://i4c-domain.simplex.live/:
1. O Googlebot-Mobile acessa a URL: https://www.domain.com.br/infos/about-us.html
2. Sua infraestrutura então terá que detectar a chamada do Googlebot e rotear a chamada (tipo proxy transparente) alterando o HOST www.domain.com.br, que é substituído por i4c-domain.simplex.live
3. Portanto, sua infraestrutura fará a chamada para https://i4c-domain.simplex.live/infos/about-us.html (retornando todos os cabeçalhos do cliente, como user-agent, cookies, etc.)
4. A infraestrutura da simplex recebe essa chamada e envia de volta para a sua infraestrutura a versão estática otimizada da página em questão
5. Sua infraestrutura envia por fim o conteúdo recebido para o Googlebot-Mobile para a URL inicialmente solicitada: https://www.domain.com.br/infos/about-us.html
Cancelar o risco de looping
Quando o SIR Cache receber uma chamada de https://www.domain.com.br/infos/about-us.html, caso não tenhamos conteúdo estático disponível gerado previamente, somos obrigados a retornar à sua origem para obter o conteúdo da página e providenciar uma versão estática.
Esse retorno à sua origem é feito usando os cabeçalhos fornecidos (User-Agent, Cookies, etc.), potencialmente com um user-agent Googlebot-Mobile, o que pode causar um loop infinito de chamadas...
Para cancelar esse risco, essa chamada do nosso sistema na origem é feita adicionando "SimplexBypass" ao user-agent; isso evita o looping.
Exemplos práticos
Exemplo 1 - Integração com a CDN Cloudflare
Aqui está o código típico para um Worker da Cloudflare
Exemplo 2 - Integração com a CDN CloudFront
Passo a Passo e Exemplo de Configuração
Passo 1: Crie uma Lambda Function
1. Acesse o Console da AWS Lambda
2. Crie uma nova função Lambda. Escolha a opção "Criar do zero"
3. Dê um nome para sua função e selecione um tempo de execução (Node.js ou Python são escolhas comuns)
4. Em "Permissões", escolha ou crie uma função de execução que tenha permissões básicas do Lambda e permissão para acessar os logs do CloudFront
5. Clique em "Criar função"
Passo 2: Escreva a lógica da função
Temos abaixo uma amostra de função Node.js que verifica o User-Agent e modifica a requisição conforme necessário
Passo 3: Faça o Deploy da Lambda Function no Edge
1. No console do Lambda, selecione Ações > Fazer o deploy no Lambda@Edge
2. Configure as opções de deploy:
3. Distribuição CloudFront: selecione sua distribuição
4. Evento CloudFront: selecione "Origin Request" para modificar as requisições antes de chegarem à origem
5. Comportamento de Cache: especifique qual comportamento de cache será afetado, ou escolha "Default (*)" para aplicar a todos
6. Confirme o deploy
Passo 4: Teste a Configuração
Depois de fazer o deploy da sua função para o Lambda@Edge, aguarde alguns minutos para que as mudanças se propaguem globalmente.
Teste seu site para garantir que as requisições estejam sendo modificadas e roteadas conforme esperado com base no User-Agent do Googlebot-Mobile.
Exemplo 3 - Integração com Apache2
Para implementar uma lógica parecida com a do Worker do Cloudflare usando um servidor Apache 2, utilize reescrita de URL e configure proxies reversos com os módulos mod_rewrite ou mod_proxy.
Esse método permite detectar o User-Agent das requisições recebidas e, se for o Googlebot-Mobile sem conter "SimplexBypass", encaminhar a chamada para outro domínio ou subdomínio.
Premissas
→ Apache 2 Instalado: Certifique-se de que o servidor Apache está instalado no sistema
→ Habilitar Módulos: Ative os módulos mod_rewrite e mod_proxy (e mod_proxy_http se for fazer proxy de conteúdo HTTP).
Você pode ativá-los com o comando `a2enmod` em sistemas Debian/Ubuntu
Acessando o arquivo de configuração
Você pode acessar o arquivo de configuração do seu site, normalmente localizado em `/etc/apache2/sites-available/` ou por meio de um arquivo `.htaccess` na raiz do diretório do site.
Exemplo de configuração
Adicione as linhas abaixo ao seu arquivo de configuração do Apache ou `.htaccess`:
Exemplo 4 - Integração com Nginx
Premissas
→ Nginx Instalado: Certifique-se de que o Nginx está instalado no servidor
→ Configuração de SSL: Caso o domínio use https://, configure corretamente o SSL, incluindo os certificados (ex: Let's Encrypt)
→ Acesso aos Arquivos de Configuração: Acesse os arquivos do Nginx localizados em `/etc/nginx/sites-available/` ou `/etc/nginx/nginx.conf` para configurações globais
Exemplo de configuração