防止缓存中间件使用HTTP_COOKIE生成缓存密钥

时间:2014-03-14 06:32:48

标签: python django caching django-middleware django-cache

我在使用Django缓存中间件时遇到问题。我想缓存一个昂贵的页面,这样就不需要为每个访问者重新生成它。

似乎SessionMiddleware正在设置" Vary:Cookie"在响应标题中。这指示缓存中间件在构建缓存密钥时包含cookie,这意味着缓存在用户会话中不是全局的。

我的MIDDLEWARE_CLASSES设置为:

MIDDLEWARE_CLASSES = (
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.http.ConditionalGetMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'users.middleware.ConcurrentUserSessionMiddleware',
    'session_security.middleware.SessionSecurityMiddleware',
)

在UpdateCacheMiddleware之前移动SessionMiddleware似乎可以解决问题。但是,这个问题表明这是错误的顺序: Practical rules for Django MiddleWare ordering?

任何想法我做错了什么?

0 个答案:

没有答案