我在使用 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 似乎可以解决问题。但是,这个 SO 问题表明这是不正确的顺序: Practical rules for Django MiddleWare ordering?
任何想法我做错了什么?