2015-10-14 53 views
0

我正在关注此MSDN tutorial以实现自定义缓存机制。在Global.asax,我加了这一点:使用VaryByCustom实现输出缓存:自定义字符串在哪里去?

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

所有的工作都是在global.asax方法GetVaryByCustomString中完成的。您可以指定希望页面变化的海关字符串的名称,您可以将其命名为任何您想要的内容,但这只是用作GetVaryByCustomString方法的一个键。如教程所示,如果你想根据例如“minor version”你可以为这个(“minorversion”)创建一个名字,然后根据context.Request.Browser.MinorVersion.ToString()来实现它。对于由GetVaryByCustomString和提供的参数返回的字符串的每个变体,您将得到不同的缓存输出。

HTH。

+0

好的,谢谢你的回答。我实际上意识到我可以通过改变URL来实现缓存,因此我甚至不需要改变自定义。无论如何,谢谢你,并接受以防止他人帮助他人。 – frenchie

相关问题