【发布时间】:2017-08-21 09:04:02
【问题描述】:
我有一个非常复杂的基于 Django 1.11 的 webapp。
前段时间用户开始报告他们正在获得“其他人的视图”——memcached 为他们提供了由装饰器 @cache_page(xx) 缓存的 html,而没有区分缓存宽限期内的会话。
经过进一步调查,我发现在某些情况下Vary: Cookie 标头丢失并且提供了错误的“会话”。奇怪的是,它只在使用 curl 查询后端时显示(没有会话、用户等 -> 后端服务登录在缓存视图中)。
不幸的是,这个问题很难重现,有时会发生,有时不会。我什至从头开始构建一个简单的 Django 应用程序,看看是否可以检查原因。
观察到的是,删除@cache_page 或添加login_required 时不会出现此问题。
我最终从视图中删除了所有 @cache_page 装饰器,并且在生产中没有观察到该问题,但这是一种解决方法,我想知道是什么原因。
如果有人有任何提示可能是什么原因,将不胜感激!
【问题讨论】:
标签: python django caching memcached vary