好记性不如烂笔头。

ASP.NET 在global.asax文件中重写stringGetVaryByCustomString方法自定义缓存

public override stringGetVaryByCustomString(HttpContext context, string custom)
{
    if(custom == "browser")
    {
       returncontext.Request.Browser.Browser + context.Request.Browser.MajorVersion;
    }
    else
    {
       return base.GetVaryByCustomString(context, custom);
    }
}  

这个方法必须写在global.asax文件中。ASP.NET使用该方法返回的字符串来实现缓存,如果这个方法在不同的请求中返回相同的字符串,ASP.NET就会使用缓存的页面,否则就会生成新的缓存版本。

上面的例子中GetVaryByCustomString()方法根据浏览器的名字创建缓存字符串,ASP.NET会根据不同的浏览器请求创建不同版本的缓存。