如何:使用请求浏览器缓存页的各个版本
更新:2007 年 11 月
如果您的 Web 应用程序包含一个基于请求浏览器的类型创建不同输出的页,则可以按请求该页的浏览器的主版本来缓存页输出的版本。例如,当 Internet Explorer 6 浏览器请求某一页时,将缓存该页的一个版本。如果是 Netscape Navigator 浏览器、Internet Explorer 的另一个版本或任何其他浏览器请求页,则将页的另一个版本添加到输出缓存中。
![]() |
---|
主版本和浏览器类型信息是通过 HttpBrowserCapabilities 对象的 MajorVersion 属性在当前请求中传递的。有关更多信息,请参见如何:在 ASP.NET 网页中检测浏览器类型。 |
基于浏览器类型以声明方式缓存页的多个版本
在 ASP.NET 页中,包括一个具有必需的 Duration 以及 VaryByParam 或 VaryByControl 属性的 @ OutputCache 指令。必须将 Duration 属性设置为大于零的整数。如果希望仅按浏览器类型进行缓存,请将 VaryByParam 属性设置为“None”。
在 @ OutputCache 指令中,包括 VaryByCustom 属性并将其设置为“browser”。
下面的示例将导致持续缓存该页达 10 秒。输出将因浏览器类型而异。
<%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="browser" %>
基于浏览器类型以编程方式缓存页的多个版本。
在页代码中,对页的 Response 属性的 Cache 属性调用 SetExpires 和 SetCacheability 方法。
调用 SetVaryByCustom 方法,在 custom 参数中传递值“browser”。
下面的代码示例演示如何持续缓存页的多个版本达 1 分钟。输出将因发出请求的浏览器的类型而异。
protected void Page_Load(object sender, EventArgs e) { Response.Cache.SetExpires(DateTime.Now.AddMinutes(1d)); Response.Cache.SetCacheability(HttpCacheability.Public); Response.Cache.SetValidUntilExpires(true); Response.Cache.SetVaryByCustom("browser"); }
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0)) Response.Cache.SetCacheability(HttpCacheability.Public) Response.Cache.SetValidUntilExpires(True) Response.Cache.SetVaryByCustom("browser") End Sub