使用VaryByCustom实现输出缓存:自定义字符串在哪里?

时间:2015-10-14 16:30:53

标签: c# asp.net caching

我遵循此MSDN tutorial来实现自定义缓存机制。在Global.asax中,我添加了这个:

public override string GetVaryByCustomString(HttpContext context, string arg)
{
    if (arg == "minorversion")
    {
        return "Version=" + context.Request.Browser.MinorVersion.ToString();
    }
    return base.GetVaryByCustomString(context, arg);
}

在aspx文件中,我在页面顶部添加了这个:<%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="minorversion" %>

我不明白的是如何使用Response.Cache.SetVaryByCustom("minorversion");以及在何处设置字符串参数,该参数在运行时根据字符串设置缓存。例如,如果在代码隐藏文件的Page_Load函数中我设置了一个名为TheLanguage的字符串变量,那么我如何以及在何处指定我希望缓存根据此字符串的值而变化?

1 个答案:

答案 0 :(得分:1)

所有工作都在global.asax方法GetVaryByCustomString中完成。您可以指定希望页面变化的关税字符串的名称,您可以将其命名为任何所需的名称,但这只是用作GetVaryByCustomString方法的键。

如教程中所示,如果您想根据例如“minor version”你可以为它创建一个名称(“minorversion”),然后根据context.Request.Browser.MinorVersion.ToString()实现它。对于GetVaryByCustomString返回的字符串的每个变体以及提供的arg,您将获得不同的缓存输出。