Redis
 sql >> Database >  >> NoSQL >> Redis

Il framework Django REST continua a rispondere con i dati memorizzati nella cache anche dopo avere chiavi redis vuote

La richiesta di 4. non raggiunge nemmeno la cache redis, perché restituisce una cache locale (notare "Dalla cache del disco" nel codice di risposta).

Dovresti distinguere tra una cache pubblica (ovvero la cache del server utilizzata da tutti gli utenti) e una cache privata (la cache del browser dell'utente).

Penso, quando si utilizza cache_page decorator, oltre a memorizzare nella cache la richiesta, imposta anche le intestazioni di risposta "Cache-control" per consentire una cache privata della richiesta. Il browser utilizza queste intestazioni per memorizzare nella cache la richiesta in locale e restituire una risposta memorizzata nella cache locale fino a max-age scade.

Per prevenire questo comportamento, a livello di server, puoi utilizzare @never_cache decorator, che imposta Cache-control intestazioni di risposta per impedire la memorizzazione nella cache locale o utilizzare @cache_control(public=True) per consentire solo la cache pubblica della richiesta (questo modifica anche le intestazioni di risposta del controllo della cache di conseguenza).

Altro su Controllo della cache.