是否可以根据会话中的某些值来改变 MVC 中的输出缓存?我已经阅读了很多关于在 Global.asax 中使用 varybycustom 功能和覆盖 GetVaryByCustomString 的内容,但此时会话不可用。
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if (custom == "somekey")
//Want to check the session here (but it isn't available).
return base.GetVaryByCustomString(context, custom);
}
我知道这是因为 Session 直到稍后在请求管道中才创建。
我担心的是,在不根据用户会话更改缓存的情况下,页面(根据用户在会话中的内容而更改,具有特定于该用户的其他 HTML 等)将被缓存(因为 URL 是相同的)和由我们的负载均衡器、代理服务器等提供服务,然后在页面上使用其他人的会话信息服务于其他请求!
URL 相同的原因是用户作为“访客”进入,输入一些信息(POST),经过验证并存储在会话中,然后他们被重定向回同一页面(现在应该根据会话数据特定于用户)。
页面本身应该被正常缓存,因为如果“访客”访问相同的 URL,它应该每次都提供相同的“标准”页面。
是否可以以这种方式改变缓存?