有没有办法可以为ASP.NET实现这种特定类型的输出缓存?

时间:2010-10-17 23:36:08

标签: c# .net asp.net caching outputcache

我想在页面生命周期之前运行自定义逻辑,以决定我想要向用户提供的缓存页面的版本。

示例:

  

如果用户未登录,则转到缓存字典,捕获页面的版本A并提供给用户。否则,如果它被记录,那么我将看看我是否已经缓存了特定于该用户的页面版本。如果某个特定的缓存版本尚不存在,我将让生命周期完成,然后我将保存它。

我想要的是管理页面的不同版本,并确定是否应该提供版本或其他版本。

1 个答案:

答案 0 :(得分:3)

您应该能够使用VaryByCustom,并让ASP.NET担心从缓存中提取正确版本的页面等。

在页面本身......

<%@ OutputCache Duration="60" VaryByParam="None" VaryByCustom="LoggedInUser" %>

在您的Global.asax文件中......

public override string GetVaryByCustomString(HttpContext context, string custom)
{
    if (custom == "LoggedInUser")
    {
        if (UserIsLoggedIn())
        {
            return "LoggedInUser:" + GetUserNameOrSomeOtherUniquePerUserString();
        }
        else
        {
            return "LoggedInUser:NONE";
        }
    }
    return base.GetVaryByCustomString(context, custom);
}