私はDjangoでmemcachedを使用してサイト全体をキャッシュしています。django cache.clear()セッション終了(ログアウト)
https://docs.djangoproject.com/en/1.11/topics/cache/#the-per-site-cache
私は、特定のオブジェクトがモデルに作成または更新されたキャッシュをクリアするには、ポストセーブシグナルハンドラメソッドにいくつかのコードを追加しました。
from proximity.models import Advert
# Cache
from django.core.cache import cache
@receiver(post_save, sender=Advert)
def save_advert(sender, instance, **kwargs):
# Clear cache
cache.clear()
残念ながら、新しいオブジェクトを作成した後、ユーザーはログアウトします。
私はその理由が私がセッションをキャッシュしていると考えることができると思います。
# Cache config
CACHE_MIDDLEWARE_SECONDS = 31449600 #(approximately 1 year, in seconds)
CACHE_MIDDLEWARE_KEY_PREFIX = COREAPP
CACHES = {
"default": {
"BACKEND": "django.core.cache.backends.memcached.MemcachedCache",
"LOCATION": "127.0.0.1:11211",
}
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
ビュー単位のキャッシュを使用する必要がありますか?
それは、「サイト全体をキャッシュ」何不明です。 –
「django.middleware.cache.UpdateCacheMiddleware」と「django.middleware.cache.FetchFromCacheMiddleware」を使用して、djangoドキュメントで説明されているようにサイト全体をキャッシュし、ミドルウェアレベルでリクエストをチャンクしました。私はドキュメントへのリンクを追加しました。 –
キャッシュをクリアすると、保存されているセッションはすべて消去されます。別のセッションバックエンドを使用するか、キャッシュする方法を変更する必要があります。すべての単一リクエストをキャッシュする必要がありますか? –