Voltar para o Blog
15 de fevereiro de 2026 Cloudflare Nginx DevOps Cache

Como configurar o cache do servidor (Cloudflare + Nginx) para entregar páginas estáticas em menos de 100ms

Como configurar o cache do servidor (Cloudflare + Nginx) para entregar páginas estáticas em menos de 100ms

Guia de DevOps para configurar regras de edge caching e cabeçalhos Cache-Control para otimizar a velocidade global do seu site.

A latência de rede e o tempo de resposta do servidor inicial (conhecido como TTFB - Time to First Byte) são métricas essenciais para o SEO e para a experiência do usuário. Quando o navegador de um visitante precisa aguardar centenas de milissegundos para receber a primeira linha de HTML do servidor de origem, toda a cadeia de renderização subsequente é atrasada.

Para alcançar um TTFB inferior a 100ms em escala global, a melhor estratégia de infraestrutura é implementar uma arquitetura de cache combinando o poder do servidor web Nginx no back-end com a rede de distribuição de conteúdo (CDN) da Cloudflare na borda (Edge).

Neste guia técnico de DevOps, você aprenderá a configurar cabeçalhos de controle de cache e regras na Cloudflare para servir páginas estáticas de forma instantânea.


O que é Edge Caching e TTFB?

O Edge Caching (Cache de Borda) é o processo de armazenar arquivos e respostas do site em servidores geograficamente distribuídos mais próximos do usuário final (pontos de presença ou PoPs). O TTFB (Time to First Byte) mede a duração desde a requisição inicial HTTP até o recebimento do primeiro byte de dados de resposta do servidor de destino.

Ao adotar uma arquitetura de cache bem-configurada, a maioria das requisições feitas ao seu site nem sequer chega ao seu servidor de origem (Nginx). A Cloudflare atende a requisição diretamente da borda da rede física, eliminando a latência de processamento de banco de dados e roteamento.

sequenceDiagram
    participant U as Usuário Final
    participant CF as Cloudflare (Borda)
    participant NG as Nginx (Origem)
    
    U->>CF: Requisição HTTP (GET /pagina)
    alt Cache HIT (Página em cache na Cloudflare)
        CF-->>U: Retorna página estática (<100ms)
    else Cache MISS (Página expirada ou não cacheada)
        CF->>NG: Encaminha Requisição HTTP
        NG->>NG: Processa a Página e gera Cabeçalhos
        NG-->>CF: Retorna página + Cache-Control Headers
        CF->>CF: Armazena cópia na Borda
        CF-->>U: Retorna resposta ao Usuário
    end

Configuração do Servidor Web Nginx

O Nginx é a base da nossa origem. Precisamos configurá-lo para enviar os cabeçalhos HTTP corretos de cache para que a Cloudflare (e os navegadores dos usuários) saibam exatamente o que armazenar em cache e por quanto tempo.

1. Definindo Cabeçalhos Cache-Control

No seu arquivo de configuração do bloco de servidor do Nginx (normalmente localizado em /etc/nginx/sites-available/default ou /etc/nginx/conf.d/site.conf), configure as regras de cache para ativos estáticos e páginas HTML.

# Configuração para arquivos de mídia e assets (CSS, JS, Imagens)
location ~* \.(js|css|png|jpg|jpeg|gif|ico|webp|svg|woff|woff2)$ {
    expires 1y;
    add_header Cache-Control "public, no-transform";
    add_header Access-Control-Allow-Origin "*";
    access_log off;
    log_not_found off;
}

# Configuração para páginas HTML dinâmicas que podem ser cacheadas
location / {
    # Define que a resposta pode ser mantida em cache pelos proxies por 1 hora (3600s) 
    # e pelo navegador do cliente por 10 minutos (600s)
    add_header Cache-Control "public, max-age=600, s-maxage=3600";
    
    # Adiciona um cabeçalho customizado para depurar o status do cache do Nginx
    add_header X-Cache-Status $upstream_cache_status;
    
    try_files $uri $uri/ /index.php?$query_string;
}

2. Ativando Compressão Brotli / Gzip

A compressão reduz o tamanho dos arquivos transferidos, o que otimiza a latência. Certifique-se de que a compressão moderna está ativada no Nginx:

# Configurações de Gzip
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_proxied any;
gzip_comp_level 6;

Configuração da Cloudflare para Cache Total

Por padrão, a Cloudflare apenas faz cache de arquivos estáticos como imagens, CSS e JS. Ela não armazena em cache o HTML de páginas dinâmicas. Para alterar isso e conseguir o carregamento sub-100ms nas páginas do seu site, precisamos forçar o cacheamento do HTML.

1. Criando Regras de Cache (Cache Rules)

No painel da Cloudflare:

  1. Navegue até a aba Caching > Cache Rules (ou Regras de Cache).
  2. Clique em Create Rule.
  3. Defina um nome para a regra (ex: “Cache HTML Completo”).
  4. No campo Field, defina Hostname e insira o domínio do seu site (ex: meusite.com.br).
  5. Em Cache Eligibility, selecione Eligible for cache.
  6. Em Edge TTL, selecione Respect origin headers (para respeitar o s-maxage configurado no Nginx) ou defina um tempo estático (ex: 2 horas).
  7. Em Browser TTL, defina para respeitar os cabeçalhos de origem.

2. Tratando Consultas de Query Strings

Por padrão, a Cloudflare trata requisições com Query Strings diferentes (ex: /?utm_source=google) como arquivos separados. Isso pode gerar múltiplas requisições de origem desnecessárias. Na configuração do comportamento de cache, ative a opção Ignore Query String se as páginas do seu site não alterarem o conteúdo dinamicamente com base nas campanhas de marketing.


Comparativo de Escopos de Cache

Nível de CacheLocal de ArmazenamentoLatência TípicaFacilidade de Invalidação
Cache do NavegadorMemória local do dispositivo do usuário.<5ms (Instantâneo)Difícil (requer mudança de nome de arquivo ou reload forçado).
Edge Cache (Cloudflare)Servidores CDN localizados geograficamente perto do usuário.10ms - 50msFácil (via API da Cloudflare ou Painel Web).
Server Cache (Nginx)Memória RAM ou SSD do servidor de origem.50ms - 150msMédia (limpeza de diretório /var/cache/nginx).

Como Invalidar o Cache Programaticamente

Ao utilizar caches agressivos, o maior desafio técnico é atualizar o conteúdo quando há modificações. Podemos configurar um webhook de CI/CD para expurgar o cache da Cloudflare sempre que um novo deploy é realizado.

Abaixo está um exemplo de comando curl que limpa todo o cache da Cloudflare usando a API oficial:

curl -X POST "https://api.cloudflare.com/client/v4/zones/SUA_ZONE_ID_AQUI/purge_cache" \
     -H "X-Auth-Email: [email protected]" \
     -H "Authorization: Bearer SEU_API_TOKEN_CLOUDFLARE" \
     -H "Content-Type: application/json" \
     --data '{"purge_everything":true}'

Conclusão

Entregar páginas em menos de 100ms exige que a maior parte da computação seja resolvida antes de bater na sua origem. Configurar o Nginx para fornecer diretivas de Cache-Control precisas e instruir a Cloudflare a guardar cópias das suas páginas HTML é uma das formas de otimização de infraestrutura mais custo-eficientes que existem. Além de aliviar a carga da sua CPU no servidor de origem, você blinda seu site contra picos repentinos de tráfego, garantindo conversão alta e constante.