Adobe Commerce

Fastly não está cacheando no Adobe Commerce? Confira a VCL

Módulo instalado, Service ID preenchido, e a loja continua lenta com o PHP fumaçando. Falta o passo que ninguém avisa: mandar a VCL para o serviço Fastly.

Por Roger Takemiya · Publicado em · 4 min de leitura

Loja em Adobe Commerce Cloud, Fastly na frente, e o TTFB é o mesmo de antes. O time olha o New Relic e vê todo request batendo no PHP. A primeira suspeita costuma ser bloco não cacheável, mas em loja recém-configurada quase sempre é mais simples: a VCL nunca foi enviada.

A documentação da Adobe é direta: "Fastly caching services do not work until you complete the initial upload of the Fastly VCL code". O módulo instalado e as credenciais salvas não bastam.

Os três passos que ligam o cache

Tudo mora em Stores > Settings > Configuration > Advanced > System. Em ordem:

  1. Em Full Page Cache, desmarque Use system value e escolha Fastly CDN em Caching Application. Por baixo isso grava system/full_page_cache/caching_application com o valor 42, que é a constante Config::FASTLY do módulo.
  2. Abra Fastly Configuration, preencha Fastly Service ID e API token e clique em Test credentials. Em Cloud, use as credenciais que a Adobe fornece para o projeto, não um token que você gerou na sua conta Fastly.
  3. Salve, limpe o cache e clique em Upload VCL to Fastly.

O passo 3 é o que quase todo mundo pula. Ele copia os snippets de VCL do módulo para o seu serviço na Fastly. Sem eles, a Fastly se comporta como um proxy burro: entrega, mas não guarda.

Vale repetir o upload sempre que você atualizar o módulo Fastly. A VCL vem versionada junto com o pacote, e um snippet velho no edge com módulo novo no Magento dá comportamento estranho e difícil de rastrear.

Prove com curl em vez de achar

Os headers de diagnóstico da Fastly só aparecem quando você manda o Fastly-Debug. Sem ele, a própria VCL remove os headers antes de entregar para o navegador — é por isso que olhar no DevTools não mostra nada:

curl -sS -o /dev/null -D - -H "Fastly-Debug: 1" https://sualoja.com.br/ \
  | grep -iE "^(fastly|x-cache|age)"

Rode duas vezes seguidas na mesma URL. A leitura:

HeaderO que ele diz
Fastly-Module-Enabledfaltou? o Caching Application não está em Fastly CDN
Fastly-Magento-VCL-Uploadedfaltou? você não subiu a VCL
fastly-page-cacheableveio NO? tem bloco com cacheable="false" na página
X-Cachedeve sair MISS na primeira chamada e HIT na segunda

Os dois primeiros vêm preenchidos com a versão do módulo. Se todos estiverem lá e o X-Cache insistir em MISS, o problema mudou de lugar.

Não procure o X-Magento-Tags nessa resposta: a VCL apaga esse header de propósito antes de entregar ao cliente. Para conferir se a origem está mandando as tags, bata direto no servidor de origem, sem passar pela Fastly.

VCL no lugar e ainda assim MISS

Com a VCL subida, os motivos que a Adobe lista para a Fastly não guardar a resposta são poucos e concretos:

  • A página devolve Set-Cookie. Por padrão a Fastly não cacheia resposta com cookie novo. Um módulo que cria cookie no layout de home ou de categoria mata o cache da loja inteira.
  • Bloco marcado como não cacheável. É o fastly-page-cacheable: NO da tabela acima, e resolve do mesmo jeito que no Varnish.
  • Módulo de terceiro apagando os headers do Magento na origem. Sem X-Magento-Tags saindo do PHP, a Fastly não tem como invalidar depois, e trata a resposta como não cacheável.

Um detalhe que confunde: com Fastly-Debug ligado ou não, o navegador do cliente recebe Cache-Control: no-store, no-cache nas páginas do Magento. Isso é de propósito — quem guarda é o edge, não o browser. Não use esse header como sinal de que a Fastly não está cacheando.

Se o cache passou a valer e a loja continua lenta, aí o problema não era CDN. Vale seguir pelo guia de performance e Core Web Vitals, porque CDN não conserta LCP de imagem gigante nem JS travando a renderização.

Perguntas rápidas

Preciso subir a VCL de novo depois de todo deploy?

Não. O upload é por serviço na Fastly, não por deploy do código. Refaça quando você atualizar a versão do módulo Fastly ou quando trocar de serviço Fastly.

Posso usar meu próprio token da Fastly em vez do que a Adobe forneceu?

Em Adobe Commerce Cloud a Adobe recomenda usar as credenciais que ela fornece para o projeto. Um token gerado por você costuma não ter permissão no serviço certo, e o Test credentials falha sem explicar direito o motivo.

O checkout e o carrinho continuam dando MISS. Está errado?

Não. Página de carrinho, checkout, conta do cliente e admin nunca devem ser cacheadas. O que precisa dar HIT é home, categoria, produto e CMS.

Pra conferir na fonte

  1. Set up Fastly services — Adobe Experience League
  2. Fastly troubleshooting — Adobe Experience League
  3. Fastly CDN module for Magento 2 — GitHub

fastly cache cloud

Precisa de um orçamento? Ficarei feliz em ajudar. Clique Aqui