Reputation: 57
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
The reason is that we use certain values in headers to distinguish which need cache(url is same), but the cache cannot recognize it.
Upvotes: 0
Views: 36
Reputation: 57
I resolve this problem by override 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']
Upvotes: 0