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