Cache do nginx para APIs (entendendo e controlando)

  • avatar Helber Maciel Guerra
    Formado em Sistemas de Informação pela Universidade Federal de Santa Catarina;
    Desenvolvimento de um projeto IPTV pela empresa Cianet Network;
    Conhecimento em arquiteturas de software distribuído;
    Linguagens de programação, como python, javascript, c, c++, go;
    Conhecimento em linux para uso em servidores, embarcados, desktop;
    Conhecimento em ciclo de vida de software e distribuição;
Fazendo o uso do cache do nginx, podemos ter melhoria de desempenho de APIs restful e conteúdos de 1000X ou mais. Mas como ter controle do que está no cache e se este conteúdo é coerente com o que está no backend?
Com sistemas de cache utilizando nginx, geralmente são baseados em tempo, mas muitas vezes ao fazer modificações nos dados, seria muito bom que este cache fosse invalidado no momento da modificação.
Vamos entender o funcionamento e analisar alternativas à invalidação de cache por expiração temporal, e fazer controle invalidação de cache em granularidade de requisição.
Vamos ver um exemplo utilizando signals do framework web django, para fazer a limpeza do cache ao haver uma modificação de conteúdo e invalidado cache mesmo de usuário autenticado, deixando intacto o cache de outro usuário.