Bancada de trabalho com monitores exibindo painéis de monitoramento de infraestrutura

Arquitetura de referência · Blueprint reutilizável

Stack técnico completo para sites WordPress de alto desempenho.

Documentação integral de uma arquitetura WordPress com captura de leads anti-bot, SEO técnico avançado, cache em várias camadas, identidade visual coesa e operação observável. Implementação inline, sem assinatura comercial, pronta para ser replicada em qualquer projeto.

  • nginx, PHP-FPM, MySQL e Redis
  • TTFB 85% menor em cache quente
  • Captura com dez camadas anti-bot
  • Watchdog, backup e idempotência

Visão de topologia

Como as camadas se relacionam.

Do navegador do visitante até o disco: cada camada tem um papel e um ponto de falha próprio.

Infra observável

nginx, PHP-FPM, MySQL e Redis, com systemd timers, backup antes de cada mudança e idempotência em todo script.

Performance real

Cache Redis em três níveis, gzip, preload de fontes e defer de JS. TTFB 85% menor em cache quente.

Captura segura

REST API própria, dez camadas anti-bot, honeypots, armadilha de tempo, limite de taxa e registro de bloqueios.

[Cliente]
   HTTPS, compressão negociada
[nginx]
   HTTP/2, TLS, cabeçalhos de cache
   gzip on
   rewrite para index.php quando não é asset
   proxy para php-fpm por socket unix
[PHP-FPM]
   WordPress core
   Elementor
   W3 Total Cache, page cache no Redis db2
   MU-plugins: SEO meta, SEO schema, performance, formulários
   wp_mail por SMTP autenticado
   wp-cron e systemd timers
[Redis]              [MySQL]            [Filesystem]
   db0 objetos          tabelas wp_        leads em JSONL
   db1 consultas        dados dos leads    builders em /usr/local/share
   db2 páginas                             backups e watchdogs
01

Infraestrutura

Camada base: servidor, cache e mailer.

nginx com gzip, Brotli em standby

Servidor web com gzip ativo. O Brotli está compilado como módulo dinâmico, mas desabilitado por padrão por causa do conflito de dupla compressão com o W3TC, documentado no capítulo 11.

  • HTTP/2 com TLS 1.3
  • gzip on, gzip_vary on
  • Cache de navegador de um ano para CSS, JS, imagens e fontes
  • Módulos Brotli compilados e prontos para ativar
  • Backup da configuração antes de cada mudança
  • Validação com nginx -t antes de todo reload

PHP-FPM com extensão Redis

Pool PHP com a extensão redis para o WordPress falar direto com o cache em memória.

  • pm.max_children dimensionado pela memória disponível
  • opcache habilitado, com revalidação periódica em produção
  • Envio de e-mail por SMTP, não por sendmail local
  • Extensões críticas: redis, mysqli, curl, intl, mbstring e opcache
  • Reload gracioso em vez de restart, para preservar as sessões

Redis com três bancos lógicos

Cache em memória separado por escopo, para que o flush de um não derrube os outros.

  • db0, cache de objetos: consultas e transients do WordPress
  • db1, cache de banco: consultas SQL repetidas
  • db2, cache de página: HTML completo em memória
  • Conexões persistentes, sem abrir socket por requisição
  • Escuta apenas em 127.0.0.1

MySQL e SMTP autenticado

Persistência relacional mais relay de e-mail autenticado para entrega comercial.

  • wp_options e wp_postmeta indexados
  • Backup de wp_options antes de cada mudança crítica
  • Provedor de SMTP confirmado pelos registros MX, nunca presumido
  • Cabeçalhos transacionais para não cair na aba de promoções
  • Log de envio consultável no banco
02

WordPress e Elementor

CMS e page builder ajustados para performance.

Core enxuto

O que não é usado sai do HTML, em vez de ser escondido por CSS.

  • Heartbeat desligado no site público
  • Emojis do core removidos
  • wp-block-library e global-styles fora da fila quando o site é todo Elementor
  • wp_generator, RSD, wlwmanifest e shortlink removidos
  • Links de feed removidos quando não há feed em uso

Elementor com CSS interno

A configuração de cache do builder é o que garante que a página não perca o estilo em um flush.

  • CSS impresso no HTML, imune a flush de cache de plugin
  • _inline_size sempre numérico, nunca nulo, senão a coluna colapsa no celular
  • Páginas construídas por scripts PHP idempotentes
  • Marcador na seção do formulário para a injeção não duplicar
  • CSS do Elementor regenerado limpando o postmeta correspondente
// Sempre setar _inline_size numérico (não null)
function eCol($size, $widgets) {
    return [
        'elType'   => 'column',
        'settings' => [
            '_inline_size'        => (float) $size,
            '_inline_size_tablet' => 100,
            '_inline_size_mobile' => 100,
        ],
        'elements' => $widgets,
    ];
}
03

Cache em várias camadas

Cada camada protege contra a falha das outras.

CamadaTecnologiaEscopo
Cache de navegadornginx com Cache-Control de um anoCSS, JS, imagens e fontes
Compressãogzip pré-gerado pelo W3TCHTML, CSS e JS, cerca de 25% menos bytes
Cache de páginaRedis db2, HTML em memóriaPáginas anônimas servidas em menos de 100ms
Cache de bancoRedis db1SELECTs idênticos não tocam o MySQL
Cache de objetosRedis db0get_post, options e hooks
MinificaçãoW3TC em CSS, JS e HTMLCerca de 25% menos bytes por arquivo
Lazy load nativoloading=lazyImagens fora da tela carregam depois
CSS internoElementor com CSS no HTMLImune a flush de cache de plugin
04

MU-plugins próprios

Quatro plugins isolados, uma responsabilidade cada.

SEO Engine, meta e schema base

Injeta meta description, canonical, Open Graph, Twitter Cards e o JSON-LD do grafo base.

  • Roda no início do wp_head, antes de qualquer outra coisa
  • Remove o canonical do core em páginas singulares, para não duplicar
  • Descrição derivada do conteúdo quando não há uma escrita à mão
  • Remove a assinatura duplicada do título quando ele já traz a marca
  • Primeira imagem com prioridade alta de carregamento, para o LCP

SEO Schema, Service, Product e FAQ

Estende o motor de SEO com o schema específico de cada página.

  • Mapa de página para tipo Service ou Product
  • Service com público, área atendida e prestador
  • FAQPage extraída automaticamente do acordeão da página
  • Cada pergunta e resposta vira um nó do grafo
  • Resultado rico no buscador e ingestão correta por buscadores de IA

Performance Engine

Reduz o bloqueio de renderização sem depender de plugin comercial.

  • preconnect e preload das fontes usadas
  • defer automático em scripts não críticos
  • Remoção de emojis, RSD, wlwmanifest e gerador
  • wp-block-library e global-styles fora da fila no site público
  • Heartbeat desregistrado fora do painel

LP Forms, captura com anti-bot

Sistema de formulários próprio, no lugar de plugin externo abandonado.

  • Endpoint REST próprio, porque POST anônimo em admin-ajax é bloqueado pelo plugin de segurança
  • Resposta em menos de um segundo, com o envio de e-mail depois de fechar a conexão
  • Arquivo JSONL local como fonte da verdade: o lead não se perde nem com o SMTP fora
  • Dois e-mails simultâneos, notificação comercial e confirmação ao cliente
  • Cabeçalhos transacionais para não cair na aba de promoções
  • Remetente dinâmico identificando o canal de origem
05

Anti-bot estratificado

Dez camadas independentes. O bot precisa passar por todas.

CamadaO que detectaReação
Honeypots múltiplosTrês campos invisíveis preenchidosDescarte silencioso ou bloqueio
Armadilha de tempoEnvio em menos de três segundos ou formulário velhoBloqueio e strike
Token que exige JSAusência do token gerado no navegadorBloqueio
Filtro de user-agentLista de 19 padrões de cliente automatizadoBloqueio silencioso
Referer e origemEnvio vindo de fora do próprio domínioBloqueio
Tamanho do payloadMais de 5 KB de parâmetrosBloqueio
Limite de taxa, nível 1Dois ou mais envios por minuto do mesmo IPResposta 429
Limite de taxa, 2 e 3Mais de cinco por hora ou vinte por diaStrike e lista de bloqueio
Sistema de strikesTrês violações em 24 horasIP bloqueado por 24 horas
Checagem semânticaURL no nome, e-mail descartável, telefone curtoRecusa com mensagem amigável

As tentativas bloqueadas são registradas em arquivo próprio, com IP, user-agent, referer e motivo, o que permite analisar padrões de ataque sem poluir a base de leads válidos.

06

SEO técnico

Cobertura para buscador tradicional e para buscador de IA.

Meta tags e Open Graph

Cobertura de todas as páginas publicadas.

  • Meta description própria, com geração automática quando falta
  • Canonical em todas as páginas singulares
  • Open Graph completo, com imagem de tamanho adequado
  • Twitter card grande com título, descrição e imagem
  • Diretivas de robôs permitindo pré-visualização grande de imagem

JSON-LD em grafo

Resultado rico no buscador e leitura correta por IA.

  • WebSite com identificador canônico do domínio
  • Organização com endereço, telefone e área atendida
  • WebPage por URL
  • Trilha de navegação automática
  • Service ou Product específico nas páginas de produto
  • FAQPage extraída do acordeão da página

Buscadores de IA

Arquivo de orientação na raiz mais permissão explícita no robots.

  • llms.txt na raiz, em markdown, listando os produtos com URL e descrição curta
  • robots.txt liberando explicitamente os rastreadores de IA conhecidos
  • Sitemap referenciado no robots.txt
  • JSON-LD rico, para ingestão sem ambiguidade

Sitemap e rastreio

Indexação acelerada.

  • Sitemap dinâmico nativo do WordPress
  • sitemap.xml redirecionando para o sitemap real
  • Bloqueio de área administrativa, cache e pasta de leads
  • Bloqueio de URLs de busca e de parâmetros que geram conteúdo duplicado
  • Monitoramento pelo Search Console
07

Identidade visual coesa

Sistema de tokens em vez de valor solto no widget.

Paleta em tokens

Definida uma vez e herdada por todos os componentes.

  • Navy como cor de marca, em título, navegação e botão principal
  • Navy profundo nos fundos de hero
  • Azul nos destaques secundários e no hover
  • Ciano nas pílulas, ênfases e detalhes
  • Verde, âmbar e vermelho apenas como status
  • Escala de texto com contraste validado em WCAG AA

Tipografia responsiva

A escala desce sozinha do desktop para o celular.

  • Uma família só, com preconnect e preload
  • Pesos 400, 500, 600 e 700
  • Título principal de 56px no desktop a 28px no celular
  • Corpo de 16px com entrelinha 1,75
  • Ênfase em itálico com peso 700, porque peso menor some

Espaçamento responsivo

O respiro do desktop sufoca o celular se não descer junto.

  • Padding vertical reduzido automaticamente no tablet e no celular
  • Padding horizontal limitado no celular
  • Grade de duas colunas virando uma só nas telas estreitas

Componentes reutilizáveis

Funções que devolvem blocos consistentes.

  • Título com tipografia responsiva automática
  • Texto com fonte e cor padronizadas
  • Pílula, botão e divisor
  • Lista com ícone
  • Bloco HTML com CSS escopado, para o estilo não vazar
08

Operação observável

Watchdog, backup e idempotência.

Persistência consciente

Nada importante mora em /tmp, que é limpo no boot.

  • Scripts em /usr/local/bin
  • Builders e dados em /usr/local/share
  • Logs em /var/log
  • Serviços habilitados para subir sozinhos
  • Timers do systemd para watchdog, arquivamento e verificações

Watchdog e recuperação

Detecta a perda do CSS interno e regenera.

  • Verificação periódica por cron, com timer redundante
  • Critério objetivo de bloco de CSS presente e com tamanho mínimo
  • Recuperação limpando o postmeta e refazendo o cache
  • Log próprio com rotação simples

Backup antes de mudar

Rollback rápido quando algo quebra.

  • Scripts idempotentes, com marcador e verificação de existência
  • Snapshot da configuração do servidor antes de editar
  • Backup do conteúdo da página antes de reescrever
  • Dump da tabela de opções antes de atualização em massa

Validação em cada passo

Falha cedo, não chega quebrado em produção.

  • php -l antes de salvar qualquer plugin
  • nginx -t antes de qualquer reload
  • Verificação do código HTTP depois da mudança
  • Teste de fumaça em uma amostra de páginas
09

Documentação contínua

O contexto sobrevive ao fim da sessão.

Base de conhecimento local

Estrutura de projetos, áreas, recursos e arquivo.

  • Registro por sessão de trabalho
  • Notas de projeto ligadas por referências cruzadas
  • Memória entre sessões, com regras e referências
  • Modelos para projeto, sessão, conceito e fonte

Grafo de conhecimento

Busca por significado em vez de busca por palavra.

  • Reindexação do acervo por comando
  • Consulta devolvendo os nós e as ligações relevantes
  • Reindexação automática ao final de cada turno

Arquivamento de transcrições

Conversa bruta virando texto legível.

  • Execução horária, idempotente, sem duplicar arquivo
  • Contexto disponível mesmo para sessões já encerradas
10

Filosofias aplicadas

Os princípios que decidem quando há dúvida.

  • Não quebrar nadaBackup antes de cada mudança, validação antes de cada reload, rollback pronto e mudança incremental.
  • Fonte da verdade localO lead é gravado em disco antes de tentar o e-mail. E-mail é notificação, não armazenamento.
  • Idempotência totalO script pode rodar uma vez ou cem, o efeito é o mesmo.
  • Separação de responsabilidadesCada plugin cuida de uma coisa. Dá para desligar um sem derrubar o resto.
  • Persistência conscienteNada importante em /tmp. Cada coisa no diretório que sobrevive ao boot.
  • Validação contínuaLint, teste de configuração, código HTTP e comparação antes e depois.
  • Documentação obrigatóriaRegistro de sessão, memória e reindexação a cada interação relevante.
  • Design não é negociávelTipografia, paleta e contraste valem também para formulário e pop-up.
  • AntifragilidadeO watchdog regenera o que se perde, o cron tem timer redundante, o cache tem camadas independentes.
11

Gotchas críticos

Erros que custam horas se você não souber antes.

  1. Dupla compressão: se o cache de página pré-gera HTML comprimido e o servidor comprime de novo, a resposta sai com dois cabeçalhos de codificação e o navegador mostra lixo binário. Escolha uma camada só de compressão.
  2. /tmp é limpo no boot. Nunca guarde script ou dado importante lá.
  3. _inline_size nulo no Elementor colapsa a coluna para 100% no celular. Sempre valor numérico.
  4. A minificação de HTML tira as aspas dos atributos. Qualquer validação por expressão regular precisa aceitar as duas formas.
  5. O css_id da seção do Elementor não vira id no HTML. Só funciona no widget.
  6. O diretório de cache de página precisa existir. Apagar a pasta inteira faz todas as páginas responderem vazias com código 200.
  7. POST anônimo em admin-ajax é bloqueado pelo plugin de segurança. Use endpoint REST próprio.
  8. Plugin de formulário sem SMTP próprio depende inteiramente do envio do WordPress: o formulário parece funcionar e o e-mail nunca sai.
  9. Serviço de e-mail com cota zerada intercepta o envio silenciosamente e marca como não enviado. Desative se o plano não inclui o recurso.
  10. Confirme o provedor de SMTP pelos registros MX antes de configurar. Presumir é a causa número um de falha de autenticação.
  11. Cabeçalho de descadastro marca o e-mail como newsletter e manda para a aba de promoções. Não usar em e-mail transacional.
  12. Existe mídia falsa de um pixel disfarçada de foto em alguns pacotes. Verifique o arquivo antes de publicar.
  13. A extensão de Redis precisa de reload do PHP-FPM depois da instalação, senão não é detectada.
  14. A saída de configuração do nginx traz caminhos do empacotador original. Remova antes de recompilar módulos.
  15. A configuração do W3TC não é JSON puro, tem um prefixo PHP antes do JSON. Remova antes de decodificar.
  16. Defer no script do Elementor quebra o builder. Existe uma lista de scripts que não podem ser adiados.
  17. Nova integração adicionada durante a sessão só fica disponível na sessão seguinte.
  18. Habilidades carregadas na inicialização não entram no meio da sessão.
  19. A combinação de cabeçalhos de mensagem automática e precedência transacional é a mais forte para o provedor entender que não é marketing.
  20. Auditoria simulada de performance mascara o ganho real de tempo de resposta, porque simula rede lenta e processador limitado.
  21. FAQ extraída do acordeão vira resultado rico automaticamente: qualquer FAQ nova entra sem trabalho manual.
12

Métricas alcançadas

O ganho medido, não o ganho estimado.

MétricaAntesDepois
Tempo até o primeiro byte, cache quente8,7s1,3s
HTML transferido330 KB32 KB
Nota de SEO na auditoria8592
Plugins ativos, superfície de ataque2015
Bots barrados na bateria de teste0 de 88 de 8
Cobertura de meta description53%100%
Cobertura de WebP nas imagens publicadasparcial94%

Tempo de carregamento percebido em rede normal: de 8 a 12 segundos para 3 a 4 segundos. A arquitetura é replicável: nenhuma peça depende de plugin comercial, CDN externa ou captcha visual.