Redis
 sql >> Base de données >  >> NoSQL >> Redis

Le framework Django REST répond toujours avec des données en cache même après avoir des clés redis vides

La requête de 4. n'atteint même pas le cache redis, car elle renvoie un cache local (notez le "Depuis le cache du disque" dans le code de réponse).

Vous devez différencier un cache public (c'est-à-dire le cache du serveur utilisé par tous les utilisateurs) et un cache privé (le cache du navigateur de l'utilisateur).

Je pense que lors de l'utilisation de cache_page décorateur, outre la mise en cache de la demande, il définit également les en-têtes de réponse "Cache-control" pour permettre un cache privé de la demande. Le navigateur utilise ces en-têtes pour mettre en cache la requête localement et renvoyer une réponse mise en cache locale jusqu'à max-age expire.

Pour éviter ce comportement, au niveau du serveur, vous pouvez utiliser @never_cache décorateur, qui définit Cache-control en-têtes de réponse pour empêcher la mise en cache locale, ou utilisez @cache_control(public=True) pour autoriser uniquement le cache public de la requête (cela modifie également les en-têtes de réponse de contrôle du cache en conséquence).

En savoir plus sur le contrôle du cache.