{"id":2247,"date":"2026-10-01T21:55:38","date_gmt":"2026-10-02T00:55:38","guid":{"rendered":"https:\/\/www.especialistadeseo.com.br\/blog\/configuracao-cirurgica-de-fastcgi_cache-no-nginx-para-eliminar-execucao-dinamica-de-php\/"},"modified":"2026-10-01T21:55:38","modified_gmt":"2026-10-02T00:55:38","slug":"configuracao-cirurgica-de-fastcgi_cache-no-nginx-para-eliminar-execucao-dinamica-de-php","status":"publish","type":"post","link":"https:\/\/www.especialistadeseo.com.br\/blog\/configuracao-cirurgica-de-fastcgi_cache-no-nginx-para-eliminar-execucao-dinamica-de-php\/","title":{"rendered":"Configura\u00e7\u00e3o Cir\u00fargica de fastcgi_cache no Nginx para Eliminar Execu\u00e7\u00e3o Din\u00e2mica de PHP"},"content":{"rendered":"\n\n<p class=\"lead wp-block-paragraph\">Se o seu servidor precisa chamar o PHP e fazer consultas no MySQL toda vez que um visitante an\u00f4nimo abre um post no blog, voc\u00ea est\u00e1 gastando processamento e mem\u00f3ria \u00e0 toa. O m\u00f3dulo <strong>fastcgi_cache do Nginx<\/strong> guarda as p\u00e1ginas prontas em cache e entrega o HTML em menos de 20 milissegundos, sem precisar tocar no PHP. O segredo para isso funcionar em sites din\u00e2micos e e-commerces \u00e9 configurar as regras de bypass para n\u00e3o cachear carrinhos, \u00e1reas logadas ou formul\u00e1rios. Veja como estruturamos isso em <a href=\"https:\/\/www.especialistadeseo.com.br\/otimizacao-de-sites.php\">Otimiza\u00e7\u00e3o de Sites e Servidores<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full featured-article-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"675\" src=\"https:\/\/www.especialistadeseo.com.br\/blog\/wp-content\/uploads\/2026\/10\/post_3_Configuracao_Cirurgica_de_fast-2.jpg\" alt=\"Configura\u00e7\u00e3o de fastcgi_cache no Nginx para WordPress\" class=\"wp-image-2246\" srcset=\"https:\/\/www.especialistadeseo.com.br\/blog\/wp-content\/uploads\/2026\/10\/post_3_Configuracao_Cirurgica_de_fast-2.jpg 1200w, https:\/\/www.especialistadeseo.com.br\/blog\/wp-content\/uploads\/2026\/10\/post_3_Configuracao_Cirurgica_de_fast-2-300x169.jpg 300w, https:\/\/www.especialistadeseo.com.br\/blog\/wp-content\/uploads\/2026\/10\/post_3_Configuracao_Cirurgica_de_fast-2-1024x576.jpg 1024w, https:\/\/www.especialistadeseo.com.br\/blog\/wp-content\/uploads\/2026\/10\/post_3_Configuracao_Cirurgica_de_fast-2-768x432.jpg 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><figcaption>Configura\u00e7\u00e3o de cache est\u00e1tico na camada do Nginx para acelerar o WordPress.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Passo a passo da configura\u00e7\u00e3o<\/h2>\n\n\n\n<ul class=\"toc-list wp-block-list\">\n    <li><a href=\"#como-funciona-o-cache\">1. O que acontece quando o Nginx entrega o cache direto<\/a><\/li>\n    <li><a href=\"#definindo-o-diretorio\">2. Definindo a pasta e os limites com fastcgi_cache_path<\/a><\/li>\n    <li><a href=\"#regras-para-nao-cachear\">3. As regras essenciais para n\u00e3o cachear carrinho nem login<\/a><\/li>\n    <li><a href=\"#testando-os-cabecalhos\">4. Como testar se o cache est\u00e1 funcionando com curl<\/a><\/li>\n    <li><a href=\"#limpando-o-cache\">5. Como limpar o cache automaticamente ao editar um post<\/a><\/li>\n    <li><a href=\"#consultoria-nginx\">6. Como colocar isso para rodar no seu site<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"como-funciona-o-cache\">1. O que acontece quando o Nginx entrega o cache direto<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sem cache no Nginx, o fluxo padr\u00e3o de cada acesso funciona assim: o Nginx recebe o pedido, passa para o PHP-FPM, o PHP compila os arquivos, carrega plugins, consulta o banco de dados, monta o HTML e devolve. Esse processo costuma demorar entre 150ms e 400ms mesmo em servidores r\u00e1pidos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quando voc\u00ea ativa o <code>fastcgi_cache<\/code>, na primeira vez que algu\u00e9m abre a p\u00e1gina o Nginx salva uma c\u00f3pia do HTML pronto em disco ou na mem\u00f3ria RAM. Do segundo visitante em diante, o Nginx l\u00ea aquele arquivo e entrega na hora. A resposta cai para <strong>10ms a 20ms<\/strong> e o uso de processador do servidor cai praticamente a zero para visitantes que est\u00e3o apenas lendo conte\u00fado.<\/p>\n\n\n\n<div class=\"cta-incontent-box\" style=\"background: linear-gradient(180deg, #18181b 0%, #121217 100%); border: 1px solid #3f3f46; border-left: 4px solid #3b82f6; border-radius: 6px; padding: 1.75rem; margin: 2.5rem 0; box-shadow: 0 10px 25px rgba(0,0,0,0.3);\">\n    <h4 style=\"color: #ffffff; font-size: 1.15rem; margin-top: 0; margin-bottom: 0.5rem;\">\n        Seu site consome muita CPU com poucos acessos simult\u00e2neos?\n    <\/h4>\n    <p style=\"color: #d4d4d8; font-size: 0.95rem; line-height: 1.6; margin-bottom: 1.25rem;\">\n        Se a maioria das suas visitas \u00e9 de leitores an\u00f4nimos, voc\u00ea n\u00e3o deveria estar executando PHP para todo mundo. N\u00f3s configuramos o fastcgi_cache sem quebrar nada.\n    <\/p>\n    <button onclick=\"showModal()\" class=\"btn-solid\" style=\"background-color: #ffffff; color: #09090b; border: none; padding: 0.75rem 1.5rem; font-weight: 600; font-size: 0.9rem; border-radius: 4px; cursor: pointer;\">\n        Solicitar configura\u00e7\u00e3o de Nginx &rarr;\n    <\/button>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"definindo-o-diretorio\">2. Definindo a pasta e os limites com fastcgi_cache_path<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A configura\u00e7\u00e3o come\u00e7a no arquivo principal <code>\/etc\/nginx\/nginx.conf<\/code>, dentro do bloco <code>http { ... }<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fastcgi_cache_path \/var\/run\/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m max_size=2g inactive=60m use_temp_path=off;\nfastcgi_cache_key \"$scheme$request_method$host$request_uri\";\nfastcgi_cache_use_stale error timeout invalid_header updating http_500 http_503;\nfastcgi_ignore_headers Cache-Control Expires Set-Cookie;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">O par\u00e2metro <code>use_temp_path=off<\/code> \u00e9 muito \u00fatil porque manda o Nginx escrever o arquivo de cache direto na pasta final, sem fazer c\u00f3pias intermedi\u00e1rias que gastam disco sem necessidade.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"regras-para-nao-cachear\">3. As regras essenciais para n\u00e3o cachear carrinho nem login<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A parte mais importante \u00e9 garantir que o cache nunca mostre a conta ou o carrinho de compras de uma pessoa para outra. Para isso, voc\u00ea define as exce\u00e7\u00f5es no arquivo do seu site em <code>\/etc\/nginx\/sites-available\/seusite.conf<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>set $skip_cache 0;\n\n# Requisi\u00e7\u00f5es POST nunca usam cache\nif ($request_method = POST) {\n    set $skip_cache 1;\n}\n\n# P\u00e1ginas com par\u00e2metros de busca ou query strings\nif ($query_string != \"\") {\n    set $skip_cache 1;\n}\n\n# Painel de administra\u00e7\u00e3o e p\u00e1ginas de compra\nif ($request_uri ~* \"\/wp-admin\/|\/xmlrpc.php|wp-.*.php|\/cart\/|\/checkout\/|\/my-account\/\") {\n    set $skip_cache 1;\n}\n\n# Usu\u00e1rios logados no WordPress ou com itens no carrinho do WooCommerce\nif ($http_cookie ~* \"comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|woocommerce_items_in_cart\") {\n    set $skip_cache 1;\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Depois, dentro do bloco <code>location ~ \\.php$<\/code>, voc\u00ea adiciona:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fastcgi_cache_bypass $skip_cache;\nfastcgi_no_cache $skip_cache;\nfastcgi_cache WORDPRESS;\nfastcgi_cache_valid 200 301 302 60m;<\/code><\/pre>\n\n\n\n<div class=\"cta-incontent-box\" style=\"background: linear-gradient(180deg, #18181b 0%, #121217 100%); border: 1px solid #3f3f46; border-left: 4px solid #f59e0b; border-radius: 6px; padding: 1.75rem; margin: 2.5rem 0; box-shadow: 0 10px 25px rgba(0,0,0,0.3);\">\n    <h4 style=\"color: #ffffff; font-size: 1.15rem; margin-top: 0; margin-bottom: 0.5rem;\">\n        Quer ter certeza de que o cache n\u00e3o vai vazar dados de usu\u00e1rios?\n    <\/h4>\n    <p style=\"color: #d4d4d8; font-size: 0.95rem; line-height: 1.6; margin-bottom: 1.25rem;\">\n        Se voc\u00ea tem uma loja com WooCommerce ou \u00e1rea de membros, as regras de cookie precisam ser muito bem testadas. Conhe\u00e7a nossa <a href=\"https:\/\/www.especialistadeseo.com.br\/auditoria-tecnica.php\" style=\"color: #60a5fa; text-decoration: underline;\">Auditoria T\u00e9cnica<\/a>.\n    <\/p>\n    <button onclick=\"showModal()\" class=\"btn-solid\" style=\"background-color: #ffffff; color: #09090b; border: none; padding: 0.75rem 1.5rem; font-weight: 600; font-size: 0.9rem; border-radius: 4px; cursor: pointer;\">\n        Agendar auditoria t\u00e9cnica &rarr;\n    <\/button>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"testando-os-cabecalhos\">4. Como testar se o cache est\u00e1 funcionando com curl<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para ver se o Nginx est\u00e1 mesmo servindo do cache, adicione esta linha no seu arquivo de configura\u00e7\u00e3o:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_header X-FastCGI-Cache $upstream_cache_status;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Depois reinicie o Nginx e fa\u00e7a o teste com o <code>curl<\/code> pelo terminal:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -I https:\/\/seusite.com.br\/artigo\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Na primeira tentativa voc\u00ea ver\u00e1 <code>X-FastCGI-Cache: MISS<\/code> (porque o Nginx acabou de gerar a p\u00e1gina). Na segunda tentativa, a resposta muda para <code>X-FastCGI-Cache: HIT<\/code>. Isso indica que o PHP n\u00e3o precisou rodar para atender a requisi\u00e7\u00e3o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"limpando-o-cache\">5. Como limpar o cache automaticamente ao editar um post<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para voc\u00ea n\u00e3o precisar entrar no servidor toda vez que publicar ou editar um post, n\u00f3s instalamos m\u00f3dulos como o <code>nginx-cache-purge<\/code> integrados aos hooks do WordPress. Quando voc\u00ea clica em atualizar no painel, o Nginx apaga apenas o arquivo correspondente \u00e0quela p\u00e1gina e \u00e0 p\u00e1gina inicial, mantendo o resto do site cacheado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Essa velocidade ajuda diretamente no seu posicionamento no Google, porque o tempo de resposta inicial cai para n\u00fameros excelentes nos relat\u00f3rios do <a href=\"https:\/\/www.especialistadeseo.com.br\/core-web-vitals.php\">Core Web Vitals<\/a> e na nossa <a href=\"https:\/\/www.especialistadeseo.com.br\/seo-tecnico.php\">Consultoria de SEO T\u00e9cnico<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"consultoria-nginx\">6. Como colocar isso para rodar no seu site<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Se voc\u00ea quer que seu site abra r\u00e1pido para milhares de pessoas sem precisar contratar servidores caros demais, entre em contato comigo. Eu, <strong>Jonathan Pav\u00e3o<\/strong>, configuro sua estrutura de Nginx e cache sob medida para o seu tipo de neg\u00f3cio.<\/p>\n\n\n\n<div class=\"cta-incontent-box\" style=\"background: linear-gradient(180deg, #18181b 0%, #121217 100%); border: 1px solid #3f3f46; border-left: 4px solid #22c55e; border-radius: 6px; padding: 1.75rem; margin: 2.5rem 0; box-shadow: 0 10px 25px rgba(0,0,0,0.3);\">\n    <h4 style=\"color: #ffffff; font-size: 1.15rem; margin-top: 0; margin-bottom: 0.5rem;\">\n        Fale comigo no WhatsApp\n    <\/h4>\n    <p style=\"color: #d4d4d8; font-size: 0.95rem; line-height: 1.6; margin-bottom: 1.25rem;\">\n        Vamos analisar sua hospedagem e acelerar seu site com Nginx.\n    <\/p>\n    <button onclick=\"showModal()\" class=\"btn-solid\" style=\"background-color: #25D366; color: #ffffff; border: none; padding: 0.85rem 1.75rem; font-weight: 600; font-size: 0.95rem; border-radius: 4px; cursor: pointer;\">\n        Conversar no WhatsApp &rarr;\n    <\/button>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Se o seu servidor precisa chamar o PHP e fazer consultas no MySQL toda vez que um visitante an\u00f4nimo abre um post no blog,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2246,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-2247","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress-e-infraestrutura"],"_links":{"self":[{"href":"https:\/\/www.especialistadeseo.com.br\/blog\/wp-json\/wp\/v2\/posts\/2247","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.especialistadeseo.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.especialistadeseo.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.especialistadeseo.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.especialistadeseo.com.br\/blog\/wp-json\/wp\/v2\/comments?post=2247"}],"version-history":[{"count":0,"href":"https:\/\/www.especialistadeseo.com.br\/blog\/wp-json\/wp\/v2\/posts\/2247\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.especialistadeseo.com.br\/blog\/wp-json\/wp\/v2\/media\/2246"}],"wp:attachment":[{"href":"https:\/\/www.especialistadeseo.com.br\/blog\/wp-json\/wp\/v2\/media?parent=2247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.especialistadeseo.com.br\/blog\/wp-json\/wp\/v2\/categories?post=2247"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.especialistadeseo.com.br\/blog\/wp-json\/wp\/v2\/tags?post=2247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}