sql >> Databasteknik >  >> NoSQL >> Redis

Django REST-ramverket svarar fortfarande med cachad data även efter att ha haft tomma redis-nycklar

Begäran från 4. träffar inte ens redis-cachen, eftersom den returnerar en lokal cache (notera "Från diskcache" i svarskoden).

Du bör skilja mellan en offentlig cache (dvs. servercachen som används av alla användare) och en privat cache (användarens webbläsarcache).

Jag tror att när du använder cache_page dekorator, förutom att cache för begäran, ställer den också in "Cache-kontroll" svarsrubriker för att tillåta en privat cache för begäran. Webbläsaren använder dessa rubriker för att cachelagra begäran lokalt och returnera ett lokalt cachat svar tills max-age går ut.

För att förhindra detta beteende, på servernivå, kan du använda @never_cache decorator, som ställer in Cache-control svarsrubriker för att förhindra lokal cachelagring, eller använd @cache_control(public=True) för att endast tillåta offentlig cache för begäran (detta justerar också cachekontrollsvarets rubriker i enlighet därmed).

Mer om kontroll av cache.




  1. Hur man hittar en delsträng i ett fält i Mongodb

  2. MongoDB $rtrim

  3. Hur beräknar man den löpande summan med aggregat?

  4. Hur uppdaterar du objekt i ett dokuments array (kapslade uppdatering)