--- name: wp-fastest-cache description: Gestão completa do WP Fastest Cache (page cache HTML local) via WP-CLI e via o MCP `wpfc` (projecto `mcp-wpfc`, multi-site, 18 tools). Cobre purga de cache nativa (`wp fastest-cache clear`), diferença entre page cache (WPFC) e object cache (Redis), preload após publicar, minify HTML/CSS/gzip, exclusão de páginas/cookies/user-agents, Clearing Specific Pages, integração CDN (Cloudflare/MaxCDN/genérica) e Varnish, customização do caminho da cache, matriz Free vs Premium, estado real Premium por site (§16.1), achado crítico sobre formato de armazenamento das options (string JSON, não JSON tipado — §16.2), e sequência de purga completa (WPFC + Cloudflare) após deploys ou mudanças de config. Usar quando "wp fastest cache", "wpfc", "purgar cache", "limpar cache wordpress", "cache não actualiza", "preload cache", "minify html", "combine css", "gzip wordpress", "excluir página cache", "cache timeout", "cdn wordpress", "clearing specific pages", "varnish wordpress", "wpfc mcp", "wp fastest pro", "mcp-wpfc". --- # /wp-fastest-cache — Gestão do WP Fastest Cache via WP-CLI Page cache local (HTML estático em disco) do bundle de performance WP Descomplicar®. Complementa (não substitui) o Redis Object Cache e o App for Cloudflare® — os três operam em camadas diferentes, ver §3. **Fonte:** leitura completa do código-fonte v1.5.0 (versão **Free** — sem `wp-fastest-cache-premium/` instalado) no servidor `server.descomplicar.pt`, porta 9443, site piloto `emanuelalmeida.pt`: `wpFastestCache.php` (2746 linhas), `inc/admin.php` (2620 linhas), `inc/cache.php` (1460 linhas), `inc/preload.php` (894 linhas), `inc/css-utilities.php` (766 linhas), `inc/cdn.php` (650 linhas), `inc/js-utilities.php` (340 linhas), `inc/single-preload.php` (346 linhas), `inc/varnish.php` (177 linhas), `inc/admin-toolbar.php`, `inc/clearing-specific-pages.php`, `inc/column.php`, `inc/wp-polls.php`, `inc/cli.php`, `uninstall.php`, e todos os templates em `templates/` (`exclude.php`, `timeout.php`, `preload.php`, `cache_path.php`, `varnish.php`, `toolbar_settings.php`, `disable_wp_cron.php`, `clearing_specific_pages.php`, `cdn/cloudflare.php`, `cdn/maxcdn.php`, `cdn/other.php`, `cdn/file_types.php`, `cdn/specify_sources.php`, `cdn/exclude_sources.php`) + `CONFIG-Plugins-Referencia.md` §3 + `BUNDLE-Excelencia-WP.md` §2.2/§2.4 + verificação ao vivo de todas as `wp_options` prefixadas `WpFastestCache*` via SSH em `emanuelalmeida.pt`, 16-08-2026. --- ## Contexto CWP — sempre obrigatório ```bash PATH=/home/USER/public_html wp --allow-root --path=$PATH ``` **Acesso via SSH:** `ssh server "sudo -u USER /usr/local/bin/wp --path=$PATH --format=json"` (alias `server` já configurado; user/path variam por site — ver tabela de sites de referência no topo desta sessão). --- ## 1. Config real — `wp_options.WpFastestCache` (JSON serializado) Não existe API `wp option patch` dedicada a este plugin de forma prática — a option é um objecto JSON simples (não serializado PHP), por isso **`wp option update` com `--format=json` funciona directamente** (ao contrário do Rank Math, que usa arrays PHP serializados e exige `wp option patch`). Internamente, `saveOption()` (`inc/admin.php`) faz `json_encode($_POST)` do formulário inteiro — ou seja, a option guarda **exactamente** o subconjunto de checkboxes que estava marcado no momento de gravar, nunca chaves "off" explícitas (chave ausente = desligada). ```bash # Ler a config completa wp option get WpFastestCache --format=json --allow-root --path=$PATH ``` Valor real verificado ao vivo em `emanuelalmeida.pt` (16-08-2026): ```json { "wpFastestCacheStatus": "on", "wpFastestCachePreload": "on", "wpFastestCachePreload_number": "4", "wpFastestCacheLoggedInUser": "on", "wpFastestCacheMobile": "on", "wpFastestCacheMobileTheme": "on", "wpFastestCacheNewPost": "on", "wpFastestCacheMinifyHtml": "on", "wpFastestCacheMinifyCss": "on", "wpFastestCacheCombineCss": "on", "wpFastestCacheGzip": "on", "wpFastestCacheLBC": "on", "wpFastestCacheDisableEmojis": "on" } ``` | Chave | Valor | O que faz | |---|---|---| | `wpFastestCacheStatus` | `on` | Liga a cache HTML (interruptor mestre) | | `wpFastestCachePreload` + `wpFastestCachePreload_number` | `on`, `4` threads | Regenera a cache automaticamente (crawl interno) em vez de esperar pela primeira visita — `4` = threads paralelas do crawler | | `wpFastestCacheLoggedInUser` | `on` | Serve cache também a utilizadores autenticados (o plugin exclui automaticamente páginas com nonce/admin-bar dinâmicos, não quebra o WP admin) | | `wpFastestCacheMobile` | `on` | **Free.** Não serve a versão desktop cacheada a dispositivos móveis (cache mobile separada da desktop, ficheiro próprio em `/cache/wpfc-mobile-cache`) | | `wpFastestCacheMobileTheme` | `on` | **⚠ Só tem efeito com o addon Premium activo** (gate `class_exists("WpFastestCachePowerfulHtml")` em `inc/admin.php:1233`). Neste site a chave está gravada no JSON mas **é ignorada em runtime** porque `wp-fastest-cache-premium/` não está instalado — ver §13 | | `wpFastestCacheNewPost` | `on` | Limpa a cache automaticamente ao publicar/actualizar conteúdo | | `wpFastestCacheMinifyHtml` | `on` | Minifica HTML na saída | | `wpFastestCacheMinifyCss` + `wpFastestCacheCombineCss` | `on` | Minifica e combina ficheiros CSS num único ficheiro | | `wpFastestCacheGzip` | `on` | Comprime a resposta com gzip | | `wpFastestCacheLBC` | `on` | Lazy Browser Caching — envia headers `Expires`/`Cache-Control` de longa duração para assets estáticos | | `wpFastestCacheDisableEmojis` | `on` | Ver §5 | ### 1.1 Todas as chaves possíveis da option `WpFastestCache` (mapeadas do código-fonte) Lista completa extraída de `grep -roh "wpFastestCache[A-Za-z_]*"` a todo o código-fonte (`wpFastestCache.php`, `inc/*.php`, `templates/**/*.php`) — não apenas as 13 activas neste site. Cada chave corresponde a um `name="..."` de formulário que, quando marcado, é gravado via `saveOption()`. **Disponíveis na versão Free (sem gate `class_exists("WpFastestCachePowerfulHtml")`):** | Chave | Free | O que faz | |---|---|---| | `wpFastestCacheStatus` | ✅ | Master switch da cache HTML | | `wpFastestCachePreload` | ✅ | Preload automático (crawler) — ver §6 | | `wpFastestCachePreload_number` | ✅ | Nº de threads paralelas do crawler de preload | | `wpFastestCacheLoggedInUser` | ✅ | Não serve cache a utilizadores autenticados | | `wpFastestCacheMobile` | ✅ | Cache mobile separada (ficheiros próprios, não é "tema mobile") | | `wpFastestCacheNewPost` | ✅ | Limpa cache ao publicar | | `wpFastestCacheNewPost_type` / `_type_all` / `_type_homepage` | ✅ | Âmbito da limpeza ao publicar — só a página nova, ou tudo, ou também a homepage (`templates/newpost.php`) | | `wpFastestCacheUpdatePost` | ✅ | Limpa cache ao actualizar um post/página existente | | `wpFastestCacheUpdatePost_type` / `_type_all` / `_type_post` | ✅ | Âmbito da limpeza ao actualizar (`templates/updatepost.php`) | | `wpFastestCacheMinifyHtml` | ✅ | Minifica HTML | | `wpFastestCacheMinifyCss` | ✅ | Minifica CSS | | `wpFastestCacheCombineCss` | ✅ | Combina ficheiros CSS | | `wpFastestCacheGzip` | ✅ | Gzip | | `wpFastestCacheLBC` | ✅ | Leverage Browser Caching (headers de expiração) | | `wpFastestCacheDisableEmojis` | ✅ | Remove script/CSS de emoji do WP core — ver §5 | | `wpFastestCacheWidgetCache` | ✅ (link de doc é premium, mas o campo em si não está gated no template lido) | Cache de widgets para reduzir queries SQL — **confirmar no wp-admin**, o link de ajuda aponta para a página de marketing Premium mas o checkbox aparece fora do bloco `class_exists` no ficheiro `templates/` correspondente | | `wpFastestCacheLanguage` | ✅ | Idioma da interface de admin do plugin (select, não afecta o frontend) | | `wpFastestCachePage` | ✅ (interno) | Campo hidden do formulário que identifica qual sub-página foi submetida (`options`, `deleteCache`, `deleteCssAndJsCache`, `cacheTimeout`) — nunca persiste na option guardada | | `wpFastestCacheTimeOut` / `_TimeOutHour` / `_TimeOutMinute` | ✅ | Cache Timeout **global legado** (1 única regra, agenda `wp_schedule_event` no hook `wp_fastest_cache`) — não confundir com o Cache Timeout Wizard (§8, `WpFastestCacheExclude`-like, guardado via `wp_fastest_cache_N`) | **Só têm efeito com `wp-fastest-cache-premium/wpFastestCachePremium.php` activo (gate `class_exists("WpFastestCachePowerfulHtml")` em `inc/admin.php`) — neste site NÃO instalado, ver §13:** | Chave | O que faria (Premium) | |---|---| | `wpFastestCacheMobileTheme` + `_themename` | Cache de um tema mobile dedicado (Mobile Cache) | | `wpFastestCacheMinifyHtmlPowerFul` | Minificação de HTML mais agressiva ("Minify HTML Plus") | | `wpFastestCacheMinifyCssPowerFul` | Minificação de CSS mais agressiva ("Minify Css Plus") | | `wpFastestCacheMinifyJs` | Minifica ficheiros JS | | `wpFastestCacheCombineJs` | Combina JS no `` | | `wpFastestCacheCombineJsPowerFul` | Combina JS no `