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

本文关键字:字符串 自定义 VaryByCustom 实现 输出 缓存 使用 | 更新日期: 2023-09-27 18:17:37

我遵循这个MSDN教程来实现自定义缓存机制。在全球。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的字符串变量,那么我如何以及在哪里指定我希望缓存随此字符串的值而变化?

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

所有工作都在全局中完成。方法,GetVaryByCustomString。您可以指定定制字符串的名称,您希望通过它来改变您的页面,并且您可以将其命名为任何您想要的名称,但这只是用作GetVaryByCustomString方法的关键字。

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