sql >> Base de Datos >  >> NoSQL >> Redis

Django REST framework aún responde con datos en caché incluso después de tener claves redis vacías

La solicitud de 4. ni siquiera llega a la memoria caché redis, porque devuelve una memoria caché local (tenga en cuenta "Desde la memoria caché del disco" en el código de respuesta).

Debe diferenciar entre un caché público (es decir, el caché del servidor utilizado por todos los usuarios) y un caché privado (el caché del navegador del usuario).

Creo que cuando uso cache_page decorador, además de almacenar en caché la solicitud, también establece encabezados de respuesta de "control de caché" para permitir un caché privado de la solicitud. El navegador usa esos encabezados para almacenar en caché la solicitud localmente y devolver una respuesta almacenada en caché local hasta max-age caduca.

Para evitar este comportamiento, a nivel del servidor, puede usar @never_cache decorador, que establece Cache-control encabezados de respuesta para evitar el almacenamiento en caché local, o use @cache_control(public=True) para permitir solo la caché pública de la solicitud (esto también modifica los encabezados de respuesta de control de caché en consecuencia).

Más información sobre el control de la memoria caché.