Python 德扬戈。仅为匿名用户提供缓存内容
我正在使用django缓存(使用中间件的每个站点缓存),并且只想向匿名用户显示缓存的页面 我找到了一个选择: 缓存\u中间件\u匿名\u 把它变成现实 在这种情况下,为登录用户生成的页面不会保存到缓存中,但为匿名用户生成的页面会保存到缓存中并发送给登录用户 如何强制django不向登录用户提供缓存内容? 我在每个页面上使用用户登录信息(比如:“hi UserName”),当匿名用户请求一个页面时,它会被缓存,因为这个登录的用户会得到:“hi anonymous!” 对不起,我的英语不好。Python 德扬戈。仅为匿名用户提供缓存内容,python,django,caching,Python,Django,Caching,我正在使用django缓存(使用中间件的每个站点缓存),并且只想向匿名用户显示缓存的页面 我找到了一个选择: 缓存\u中间件\u匿名\u 把它变成现实 在这种情况下,为登录用户生成的页面不会保存到缓存中,但为匿名用户生成的页面会保存到缓存中并发送给登录用户 如何强制django不向登录用户提供缓存内容? 我在每个页面上使用用户登录信息(比如:“hi UserName”),当匿名用户请求一个页面时,它会被缓存,因为这个登录的用户会得到:“hi anonymous!” 对不起,我的英语不好。 约翰。
约翰。看来你需要的是不同的装修师。例如,您可以使用以下代码:
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
我从你那里借用了代码。现在,您只需添加中间件,不必担心其他任何事情