缓存 ASP.NET 页

ASP.NET 允许您在具有 HTTP 1.1 功能的机制上缓存动态页的整个响应内容,这些机制指浏览器、代理服务器和您的应用程序所驻留的 Web 服务器等。这为您提供了一个强有力的方式来提高 Web 应用程序的性能。此技术叫做输出缓存,它允许从缓存满足后面的对特定页的请求,这样当后面的请求发生时就不需要运行最初创建页的代码。使用该技术来缓存站点中最经常访问的页可以充分地提高 Web 服务器的吞吐量(通常以每秒的请求数计算)。

当操作页的输出缓存时,您可以选择高级别的声明性 API 或低级别的编程 API。您可以通过将@ OutputCache 指令包括在该页的 .aspx 文件中使用前者。@ OutputCache 指令可以满足当要缓存页输出时几乎所有的一般需求。下面的指令(当包括在 .aspx 文件中时)为动态生成页的缓存输出设置 60 秒的到期时间。

<%@ OutputCache Duration="60" VaryByParam="None" %>
警告   当使用 @ OutputCache 指令时,DurationVaryByParam 属性是必需的。如果您不将它们包括在其中,则当首次请求页时将出现分析器错误。如果您不想使用 VaryByParam 属性提供的功能,则必须将其值设置为 None。有关使用 VaryByParam 属性的更多信息,请参见缓存页的多个版本

ASP.NET 还包括一组 API,它们通过 HttpCachePolicy 类以编程方式控制页的输出缓存的到期时间和策略。通过 HttpResponse.Cache 属性可以使用该类、它的方法和它的属性。您又可以通过 Page.Response 属性从 Page 对象访问该属性。

例如,下面的代码(当包括在页的代码声明块或其代码隐藏类中时)使用 HttpCachePolicy.SetExpires 方法为动态生成的页设置 60 秒的到期时间。

[C#]
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
[Visual Basic]
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))

一旦您启用了输出缓存,该页的第一个 HTTP GET 请求会在您指定的一段时间内将其动态内容放置在输出缓存中。输出缓存满足后面对该页的 GET、HEAD 或 POST 请求,直到超过您指定的时间量。

您还可以用声明或编程的方式,在请求流中启用或禁用支持缓存的设备的页输出缓存。在页的 @ OutputCache 指令中,可以使用 Location 属性指定是否将页输出缓存在代理服务器、浏览器客户端、原 Web 服务器或所有这些设备中,或者不缓存在这些设备中的任何一个。可以以编程方式执行同样的操作,使用 HttpCachePolicy.SetCacheability 方法为页指定适当的 HttpCacheability 枚举值。有关更多信息,请参见设置页的可缓存性

还可以对由带有查询字符串参数的 GET 请求或带有参数的窗体 POST 请求生成的响应进行缓存,但必须使用 @ OutputCache 指令的 VaryByParam 属性显式启用对传递参数的缓存。有关更多信息,请参见缓存页的多个版本

请记住,要以编程方式对输出缓存进行的任何操作必须在 .aspx 文件的代码声明块中进行,或在与该 .aspx 文件关联的代码隐藏类中进行。

原文地址:https://www.cnblogs.com/zsxfbj/p/140396.html