Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

A estrutura REST do Django ainda responde com dados em cache, mesmo depois de ter chaves redis vazias


A solicitação de 4. nem chega ao cache redis, pois retorna um cache local (observe o "From disk cache" no código de resposta).

Você deve diferenciar entre um cache público (ou seja, o cache do servidor usado por todos os usuários) e um cache privado (o cache do navegador do usuário).

Acho que, ao usar cache_page decorador, além de armazenar em cache a solicitação, ele também define os cabeçalhos de resposta "Controle de cache" para permitir um cache privado da solicitação. O navegador usa esses cabeçalhos para armazenar em cache a solicitação localmente e retornar uma resposta em cache local até max-age expira.

Para evitar esse comportamento, no nível do servidor, você pode usar @never_cache decorador, que define Cache-control cabeçalhos de resposta para evitar o cache local ou use @cache_control(public=True) para permitir apenas o cache público da solicitação (isso também ajusta os cabeçalhos de resposta de controle de cache de acordo).

Mais sobre como controlar o cache.