我有一个MVC.net站点,我正试图利用OutputCache来提高性能。
/// <summary> /// Broker View Page /// </summary> /// <returns></returns> [Route("{lang}/brokers/details/{id}/{code}", Order = 1)] [Route("brokers/details/{id}/{code}", Order = 2)] [OutputCache(Duration = (60 * 60), VaryByParam = "none")] public ActionResult View(int? id, string code) {
如果客户端匿名访问该页,随后登录并返回该页,则仍会显示未经身份验证的视图(经过身份验证的客户端应看到相同的内容,但页眉不同)
你可以用“VaryByCustom”
控制器内
[OutputCache(Duration = 1000, VaryByCustom = "user")] public ActionResult Index() { return View(); }
在Global.ascx.cs中:
public override string GetVaryByCustomString(HttpContext context, string custom) { if (custom == "user") { if (context.Request.IsAuthenticated) { return context.User.Identity.Name; } } return "anonymous" }
每个用户都有自己唯一的缓存版本,并且还有一个为“匿名”用户创建的缓存版本。