我遵循此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
的字符串变量,那么我如何以及在何处指定我希望缓存根据此字符串的值而变化?
答案 0 :(得分:1)
所有工作都在global.asax方法GetVaryByCustomString中完成。您可以指定希望页面变化的关税字符串的名称,您可以将其命名为任何所需的名称,但这只是用作GetVaryByCustomString方法的键。
如教程中所示,如果您想根据例如“minor version”你可以为它创建一个名称(“minorversion”),然后根据context.Request.Browser.MinorVersion.ToString()实现它。对于GetVaryByCustomString返回的字符串的每个变体以及提供的arg,您将获得不同的缓存输出。