多くのページでページレベルのキャッシュを設定しました。しかし、しばらくして管理者ユーザがログインして、サイトの潜在的な変更をプレビューします。Django - ユーザーによるページレベルキャッシュの無効化
ページレベルのキャッシュを無効にする方法はありますか?
私はthe docsを読んだが、何も見なかった。
更新: ここv1k45の回答に基づいて私の試みです:
from django.middleware.cache import FetchFromCacheMiddleware
logger = logging.getLogger(__name__)
class ExceptImpersonateFetchFromCacheMiddleware(FetchFromCacheMiddleware):
def process_request(self, request):
# Break out of caching is we're using impersonate
if request.user and hasattr(request.user, 'is_impersonate') and request.user.is_impersonate:
logger.warning("Skipping cache_page for user %s because it is impersonation" % str(request.user))
request._cache_update_cache = False
return None
# Normal flow:
return super(ExceptImpersonateFetchFromCacheMiddleware, self).process_request(request)
これは非常に有望です!ありがとう!これを行う最善の方法は何ですか?私はDjango自身のソースコードを変更していますか、よりスマートな方法がありますか? – Greg
あなたはdjangoのソースコードを変更していません。djangoが提供するミドルウェアは、いつでも置き換えられるように置き換えられています。拡張クラスのpythonパスをsettings.pyの 'MIDDLEWARE_CLASSES'に入れてください。 – v1k45
新しいクラス "FetchFromCacheMiddleware"の名前をDjangoのバージョンを上書きすると言っていますか? MIDDLEWARE_CLASSESのsettings.pyに記載されている "FetchFromCacheMiddleware"は表示されません。 – Greg