是否可以根据会话中的某些值改变MVC中的输出缓存?我已经阅读了很多关于在Global.asax中使用varybycustom功能和重写GetVaryByCustomString的知识,但会话在此时不可用。基于会话值的MVC OutputCache
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);
}
我明白这是因为直到稍后请求管道中才创建会话。
我的问题是,如果不根据用户的会话改变缓存,页面(根据用户在会话中有什么变化,具有特定于该用户的附加HTML等)将被缓存(因为URL是同样),并由我们的负载均衡器,代理服务器等提供服务,然后用其他人的会话信息在页面上提供其他请求!
该URL相同的原因是用户作为'客人'进来,输入一些信息(POST),这是验证和存储在会话中,然后他们被重新定向回到同一页面(现在应该基于会话数据专用于用户)。
页面本身应该正常缓存,因为如果'访客'访问相同的URL,它应该每次都服务于相同的'标准'页面。
可以通过这种方式改变缓存吗?