[转]ASP.NET 缓存功能(一)

生成高性能、可缩放的 Web 应用程序最重要的因素之一是能够在首次请求项时将这些项存储在内存中,不管它们是数据对象、页还是页的某些部分。可以将这些项存储在 Web 服务器上或请求流中的其他软件上,例如代理服务器或浏览器。使您能够避免重新创建满足先前请求的信息,尤其是那些需要大量处理器时间或资源的信息。这就是通常所说的缓存,它允许您使用多种技术跨 HTTP 请求存储页输出或应用程序数据并对其进行重复使用。这样,服务器不需要重新创建信息,从而节省了时间和资源。

ASP.NET 提供了两种您可以用来创建高性能 Web 应用程序的缓存类型。第一种叫做输出缓存,它允许将动态页或用户控件响应存储在输出流(从发起服务器到请求浏览器)中任何具备 HTTP 1.1 缓存功能的设备上。当后面的请求发生时,不执行页或用户控件代码,缓存的输出用于满足该请求。第二种类型的缓存是传统的应用程序数据缓存,可以使用它以编程方式将任意对象(例如数据集)存储到服务器内存,这样您的应用程序可以节省重新创建这些对象所需的时间和资源。

设置页缓存的到期时间

若要将页添加到输出缓存中,您必须建立该页的到期策略。您可以使用 @ OutputCache 指令以声明方式完成该操作,或使用 HttpCachePolicy.SetExpires 方法以编程方式完成该操作。默认情况下,@ OutputCache 指令将 Cache-Control 标头设置为 Public

如果以编程方式为页设置到期时间,则您还必须为缓存的页设置 Cache-Control 标头。使用 HttpCachePolicy.SetCacheability 方法将 HttpCacheability 枚举设置为 Public

以声明方式为页设置输出缓存到期时间

  • @ OutputCache 指令包含在要将其响应存储在输出缓存中的页(.aspx 文件)中。该指令必须包括一个 Duration 属性(该属性具有正数字值)和一个 VaryByParam 属性。下面的 @ OutputCache 指令将页的到期时间设置为 60 秒。
    <%@ OutputCache Duration="60" VaryByParam="None" %>
    注意   当使用 @ OutputCache 指令时,您必须包括一个 VaryByParam 属性,否则将发生分析器错误。如果不想使用 VaryByParam 属性所提供的功能,请将其值设置为 None。有关使用 VaryByParam 属性的更多信息,请参见缓存页的多个版本

以编程方式为页设置输出缓存到期时间

  • 在页的代码声明块中或在该页的代码隐藏类中,通过使用 Response.Cache 语法将设置该页到期策略的代码包括在其中。下面的示例设置页的到期时间,如上一个过程中 @ OutputCache 指令所进行的操作。
    [C#]
        
    1Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
    2    Response.Cache.SetCacheability(HttpCacheability.Public);
    3    Response.Cache.SetValidUntilExpires(true);
    4    [Visual Basic]
    5    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
    6    Response.Cache.SetCacheability(HttpCacheability.Public)
    7    Response.Cache.SetValidUntilExpires(True)
  • 一旦超过了缓存页的持续时间,后面对该页的请求将导致动态生成的响应。又会在一段指定的持续时间内缓存该响应页。

posted @ 2007-01-30 15:27  么么茶.NET  阅读(233)  评论(0编辑  收藏  举报