Кажется, что вам нужны vary
декораторы.Например, вы можете использовать этот код:
from django.views.decorators.vary import vary_on_headers
@vary_on_headers('Cookie')
def my_view(request):
# do some stuff
или эквивалентно
from django.views.decorators.vary import vary_on_cookie
@vary_on_cookie
def my_view(request):
# do some stuff
Ответ будет кэшироваться, если файлы cookie не изменятся (это происходит, например, когда пользователь входит в систему).Есть и другие интересные вещи, которые вы можете сделать с vary
.См. эту статью или документацию для получения более подробной информации.
Вы также можете попробовать сделать это в пользовательском промежуточном программном обеспечении, чтобы вам не приходилось добавлять эти декораторы на каждомПосмотреть.Это можно сделать так:
from django.utils.cache import add_never_cache_headers
class DisableClientSideCachingMiddleware(object):
def process_response(self, request, response):
if request.user.is_authenticated():
add_never_cache_headers(response)
return response
Я позаимствовал код у здесь .Теперь вы только добавляете промежуточное программное обеспечение, и вам не нужно больше ни о чем беспокоиться.