Skip to content

Instantly share code, notes, and snippets.

@gustavohenrique
Last active June 7, 2022 22:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gustavohenrique/ee9625f73eb6b969af5cf685ba9e814d to your computer and use it in GitHub Desktop.
Save gustavohenrique/ee9625f73eb6b969af5cf685ba9e814d to your computer and use it in GitHub Desktop.
Estória para desenvolvimento do módulo do Magento 2

Cenário

Utilizamos a GoCache como CDN para fazer cache de arquivos estáticos (imagens, css e javascript) e conteúdo dinâmico, como nome, descrição e preço de um produto.

Todo o tráfego do usuário passa pela CDN antes de chegar no sistema Magento. Então a CDN faz cache do conteúdo e os usuários passam a obter a informação do site à partir do cache, não mais do Magento.

É comum que uma plataforma de ecommerce precise alterar imagens, descrição e preços dos produtos com frequência. Mesmo depois dessa alteração ser feita no Magento, os usuários continuam obtendo as informações desatualizadas do cache. Por isso, precisamos de um módulo no qual consiga limpar o cache da CDN sempre que alguma informação for alterada no Magento.

Solução

A CDN da GoCache possui uma API Rest que permite gerenciar o cache da aplicação. Precisamos de um módulo para o Magento que forneça uma interface web para que o operador do site possa fazer a limpeza manual do cache. Também é necessário limpar o cache da página de um produto e das outras páginas que possuam um bloco associado com informações do produto.

Exemplo de interface para o plugin

Limpeza do cache por tags

A goCache possui um recurso chamado de Cache-Tags que permite que o cache seja limpo desde que contenha pelo menos uma das tags. Para isso, é necessário adicionar um response header Cache-Tags:tag1,tag2,oturatag na página do produto e onde mais houver alguma informação sobre o produto. Essas tags podem ser o ID do produto, SKU ou qualquer outra informação.

Depois, ao salvar o produto, basta enviar uma requisição para API da GoCache informando pelo menos uma das tags, para limpeza do cache.

Detalhes técnicos

A autenticação com a API da GoCache é feita por um token gerado no painel da GoCache. Esse token precisa ser cadastrado pelo operador do site, usando a interface do Magento, para ser utilizado no header das requisições HTTP de limpeza de cache.

Exemplos de uso da API:

# Validação do token
https://api.gocache.com.br/v1/domain/{dominio_principal}

# Limpar todo o cache
https://api.gocache.com.br/v1/cache/{dominio_principal}/all)

# Ativar/desativar SmartCache - parâmetro smart_status=true ou false
https://api.gocache.com.br/v1/domain/{dominio_principal}

# Alterar tempo de expiração na CDN - parâmetro smart_ttl=N
https://api.gocache.com.br/v1/domain/{dominio_principal}

# Alterar tempo de expiração no navegador - parâmetro expires_ttl=N
https://api.gocache.com.br/v1/domain/{dominio_principal}

# Limpar URLs em lote - parâmetro urls[index]=url
https://api.gocache.com.br/v1/cache/{dominio_principal}

A documentação da API pode ser encontrada em https://docs.gocache.com.br/

@tayner
Copy link

tayner commented May 24, 2022

@gustavohenrique Consigo desenvolver esse plugin, se tiver interesse só me chamar Whatsapp (11) 98600-5601.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment