如何:使用请求浏览器缓存页的各个版本

更新:2007 年 11 月

如果您的 Web 应用程序包含一个基于请求浏览器的类型创建不同输出的页,则可以按请求该页的浏览器的主版本来缓存页输出的版本。例如,当 Internet Explorer 6 浏览器请求某一页时,将缓存该页的一个版本。如果是 Netscape Navigator 浏览器、Internet Explorer 的另一个版本或任何其他浏览器请求页,则将页的另一个版本添加到输出缓存中。

77a0146y.alert_note(zh-cn,VS.90).gif说明:

主版本和浏览器类型信息是通过 HttpBrowserCapabilities 对象的 MajorVersion 属性在当前请求中传递的。有关更多信息,请参见如何:在 ASP.NET 网页中检测浏览器类型

基于浏览器类型以声明方式缓存页的多个版本

  1. 在 ASP.NET 页中,包括一个具有必需的 Duration 以及 VaryByParamVaryByControl 属性的 @ OutputCache 指令。必须将 Duration 属性设置为大于零的整数。如果希望仅按浏览器类型进行缓存,请将 VaryByParam 属性设置为“None”。

  2. @ OutputCache 指令中,包括 VaryByCustom 属性并将其设置为“browser”。

    下面的示例将导致持续缓存该页达 10 秒。输出将因浏览器类型而异。

    <%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="browser" %>
    

基于浏览器类型以编程方式缓存页的多个版本。

  1. 在页代码中,对页的 Response 属性的 Cache 属性调用 SetExpiresSetCacheability 方法。

  2. 调用 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
    

请参见

任务

如何:以声明方式设置 ASP.NET 页的可缓存性

如何:以编程方式设置页的可缓存性

如何:使用参数对页的各个版本进行缓存

如何:使用 HTTP 标头对某页的各个版本进行缓存

如何:使用自定义字符串对页的各个版本进行缓存

概念

缓存 ASP.NET 页

设置页的可缓存性

缓存页的多个版本