Ich verwende redis zum Caching in einer Django-App. Ich benutze auch Django Rest Framework, und hier ist mein Problem.Cache aktualisieren, wenn sich Inhalt ändert, bevor Cache-TTL abläuft
Ich bin mit dem Cache-System wie folgt aus:
from django.views.decorators.cache import cache_page
urlpatterns = [
...
url(r'^some_url/$', cache_page(CACHE_TTL)(SomeView.as_view())
...
]
Hier SomeView
ist eine Klasse, die von APIView erbt.
Stellen Sie sich nun vor, wir stellen eine Anfrage an diese URL und wir erhalten ein JSON-Objekt, das eine Instanz dessen enthält, was diese URL zurückgibt.
Dann fahren wir fort, das Objekt zu löschen (mit django Admin-Schnittstelle) und die Anfrage erneut zu machen. Das erwartete Ergebnis ist ein leeres JSON-Objekt, aber das, was ich empfange, ist das gleiche Objekt unverändert, das gleiche passiert, wenn ein neues Objekt hinzugefügt wird, die Antwort immer noch nur ein Objekt.
Nach einiger Zeit (die TTL der Anfrage im Cache) ist das Ergebnis korrekt.
Also, wie kann ich django sagen, dass ein Cache-Eintrag nicht mehr gültig ist?
Mögliche Duplikate von [Expire einen View-Cache in Django?] (Http://Stackoverflow.com/questions/2268417/expire-a-view-cache-in-django) – alazaro
@alzaro, Es ist nicht das gleiche Frage, ist wahr, die Antwort der Frage, auf die Sie verweisen, lösen mein Problem, aber das ursprüngliche Problem ist nicht das gleiche. Ich möchte nicht ** den Cache ablaufen lassen **, ich möchte den ** Cache aktualisiert bekommen **. –