[转]ASP.NET 缓存(八)--根据请求浏览器缓存页的版本
您可以使用@ OutputCache 指令的 VaryByCustom 属性或 HttpCachePolicy.SetVaryByCustom 方法根据请求该页的浏览器的主版本来改变页输出的版本。该主版本和浏览器类型信息是通过与当前请求关联的 HttpBrowserCapabilities.MajorVersion 属性传递的。您可以通过与该页关联的 Request 对象访问此信息,但是使用 ASP.NET 提供的内置功能将更简单。
根据浏览器类型以声明方式缓存页输出的多个版本
- 在 .aspx 文件中,将 @OutputCache 指令与必需的 Duration 和 VaryByParam 属性包括在一起。必须将 Duration 属性设置为大于零的任意整数。如果不想使用 VaryByParam 属性提供的功能,则必须将其值设置为 None。
- 在 @OutputCache 指令体中,包括 VaryByCustom 属性并将其设置为 browser。
<%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="browser" %>
根据自定义字符串以编程方式缓存页响应的多个版本
- 在该页的代码声明块或代码隐藏类中,使用 Response.Cache 语法为已缓存的页面内容设置到期和可见性策略。您可以分别使用 HttpCachePolicy.SetExpires 和 HttpCachePolicy.SetCacheability 方法来完成此任务。有关更多信息,请参见设置页缓存的到期时间和设置页的可缓存性。
- 在相同的代码中,在 SetVaryByCustom 方法的 custom 参数中指定 browser。
[C#] Response.Cache.SetVaryByCustom("browser"); [Visual Basic] Response.Cache.SetVaryByCustom("browser")
不管您使用哪种技术,当指定 browser 时,ASP.NET 根据在与当前请求一起传递的 Request.Browser.Type 属性中传递的浏览器名称和主版本信息来自动缓存页输出的版本。通过与该请求关联的 HttpContext 类可以使用该信息。
例如,当 Internet Explorer 5 浏览器请求页时,则将为请求的 Type 属性中传递的字符串值 "IE5" 缓存页的版本。如果是 Netscape Navigator 浏览器、Internet Explorer 的另一个版本或任何其他浏览器请求页,则将页的另一个版本添加到输出缓存中。