Django, можно ли заставить запрос обходить кэш, даже если ключ кэша уже существует

settings.py
['django.middleware.cache.UpdateCacheMiddleware'] + MIDDLEWARE + ['django.middleware.cache.FetchFromCacheMiddleware']

middleware.py
    def middleware(request):
        if global_value % 2 == 1:
            # bypass cache, can I do something?
            response = get_response(request)
        else:
            response = get_response(request)
        return response

Причина в том, что мы используем определенные значения в заголовках, чтобы отличить, что нужно кэшировать(url одинаковый), но кэш не может распознать это.

Я решаю эту проблему, переопределяя FetchFromCacheMiddleware: middleware.py

from django.middleware.cache import FetchFromCacheMiddleware

class MyFetchFromCacheMiddleware(FetchFromCacheMiddleware):
    def process_request(self, request):
        if 'version' in request.headers:
            request._cache_update_cache = False
            return None  # Don't bother checking the cache.
        return super().process_request(request)

settings.py

    MIDDLEWARE = ['django.middleware.cache.UpdateCacheMiddleware'] + MIDDLEWARE + ['mobile_py.middleware.MyFetchFromCacheMiddleware']
Вернуться на верх