Skip to content

Integração Cloudflare ​

O MIDDAG Account utiliza Cloudflare D1 e R2 como serviços de infraestrutura. O D1 fornece um banco de dados réplica de leitura na edge para o portal do cliente. O R2 fornece armazenamento de objetos para ZIPs de plugins, documentos e outros arquivos. Workers, D1 e R2 são infraestrutura externa gerenciada fora do plugin -- o plugin lida com o lado WordPress da sincronização.

Configuração ​

Token de API ​

O plugin comunica-se com o Cloudflare usando um token de API com permissões para D1 e R2. Configure-o como variável de ambiente:

VariávelDescrição
CLOUDFLARE_API_TOKENToken de API do Cloudflare
CLOUDFLARE_ACCOUNT_IDID da conta Cloudflare

O token deve ter as permissões mínimas necessárias: leitura/escrita no D1 e leitura/escrita de objetos no R2.

D1 -- Banco de dados na edge ​

O D1 atua como cache de réplica de leitura para dados que o portal do cliente (NextJS) acessa com frequência. O plugin WordPress é a fonte da verdade; o D1 é uma camada de desempenho.

O que é armazenado em cache ​

DadoOrigem no pluginMétodo de atualização
Perfis de organizaçãoOrganizationServiceWebhook (quase em tempo real)
Status de licençasLicenseServiceWebhook (quase em tempo real)
Catálogo de produtosWooCommerceCron (periódico)
Metadados de pluginsDownloadServiceCron (periódico)

Sincronização ​

Dois mecanismos mantêm o D1 sincronizado:

  1. Webhooks (quase em tempo real): Quando dados relevantes mudam (organização atualizada, licença ativada, pedido criado), o plugin dispara um webhook para um endpoint Cloudflare Workers via do_action('middag_cloudflare_sync', $entity, $event).

  2. Cron (reconciliação): Um job WP-Cron periódico sincroniza dados em lotes para capturar quaisquer alterações que os webhooks possam ter perdido.

Consistência eventual é aceitável para o portal. Operações críticas (válidação de licença, processamento de pagamento) sempre consultam a REST API do plugin diretamente.

Invalidação de cache ​

Quando um produto ou documento é atualizado, o plugin aciona a invalidação no D1 e purga o cache dos Workers via API do Cloudflare.

R2 -- Armazenamento de objetos ​

O R2 fornece armazenamento de objetos compatível com S3. O plugin o utiliza para distribuição de arquivos e gerenciamento de documentos.

Buckets ​

BucketConteúdoGerenciado por
middag-pluginsArquivos ZIP de plugins WordPress versionadosCI/CD + Plugin
middag-documentsContratos, PDFs de faturas, termosPlugin
middag-app-cacheCache ISR do NextJSWorkers

URLs assinadas ​

O plugin gera URLs temporárias pré-assinadas para downloads autorizados do R2. Antes de gerar uma URL, o plugin válida o status da licença ou entitlement do solicitante. As URLs expiram após um período configurável.

Uploads ​

O plugin faz upload de documentos (contratos, PDFs de faturas) para o R2 usando a API compatível com S3. Isso acontece automaticamente quando um documento é gerado ou vinculado a um entitlement.

Arquitetura ​

O plugin lida apenas com dados de saída. Ele envia dados para o D1 e R2, e invalida caches. Ele não recebe dados de entrada do Cloudflare.