All for Joomla All for Webmasters
Ruby On Rails

Melhorando o tempo de resposta das suas API’s com o Rails Cache

No desenvolvimento de uma aplicação é comum se deparar com alguns endpoints da sua API que apenas eventualmente vão alterar a resposta à sua chamada. Nesses casos, esse retrabalho desnecessário em termos de processamento pode acabar se tornando um gargalo no desempenho da aplicação. Nessas situações, quando a resposta não precisa necessariamente estar atualizada em tempo real, uma boa solução é fazer o cacheamento da resposta. Neste exemplo, vou demonstrar essa solução no Ruby on Rails para uma chamada à uma API do WordPress.

Considere o seguinte cenário: no seu endpoint, você precisa recuperar os posts pela API de uma seção do blog que raramente recebe novos posts. Sem o cacheamento, cada requisição de usuário implica em uma chamada à API externa, que frequentemente vai retornar a mesma resposta. Para otimizar esse processo, podemos definir em nossa chamada uma chave que identifica esse valor cacheado. Para requisições seguintes, que contenham a mesma chave, o framework já vai te esse valor disponível sem precisar re-processar o mesmo fluxo. Demonstrando no código:

Este é um exemplo bem clássico de recuperação de posts pela API do wordpress. Perceba que a atribuição à variável de posts passa a se tornar um bloco com a chamada à API. Para a função fetch do framework de cache (disponível nativamente no Rails), passamos dois parâmetros: um array de chaves que identifica nossa chamada, e o tempo de validade desse cache (que deve ser ajustado conforme a frequência de atualização da resposta). Sendo o primeiro parâmetro um array, você pode passar um conjunto de N chaves que identifiquem essa chamada. Em um exemplo onde você quisesse cachear por usuário, por exemplo, uma solução seria adicionar o ID do usuário nesse conjunto.

Esse pequeno e simples trecho de código é o suficiente para um ganho considerável de performance na sua aplicação. Lembrando que, por padrão, o cacheamento em ambiente de desenvolvimento está desabilitado. Para habilitar/desabilitar, é só executar o comando rake dev:cache . Quais dúvidas ou sugestões, utilize a área de comentários ou entre em contato!

Você Também Pode Gostar

Nenhum Comentário

Deixe uma Resposta