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

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

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.