ASP.NET缓存通过在内存中存储页面输出来构建一个高性能的,可伸缩的asp.net web应用程序。在随 后的请求中,网页代码不用执行,直接使缓存的输出用于服务的请求。在本文中,我们专注于ASP.NET页 面输出缓存。
这只是在一站式开发技术框架中Silverlight样例的一部分,你能从http://cfx.codeplex.com/上获得 更多的例子。
Microsoft All-In-One Code Framework ,微软通过典型的三种流行的编程语言(Visual C#, VB.NET和Visual C++)编写代码示例代码来描绘微软主要的开发技术。每个示例是精心挑选,组成的,并 提供测试,或使用的编码方案。
默认情况下,我们去请求一个ASP.NET 站点,每次请求都将进行多步处理的。 例如页面的初始化,加 载,渲染等等。这样会消耗大量的服务器资源。考虑以下情形:许多客户浏览ASP.NET的新闻网页和新闻 网站的页面几个小时都不会改变 。基于共同的路线,多个客户的几乎在同一时间在请求同一个新闻网页 ,ASP.NET将执行相同的代码生成多次相同新闻。这是一种浪费资源的过程。因此,我们开始考虑能否生 成一次响应,它能服务于多个客户。答案就是缓存。
ASP.NET提供了两个缓存的方法。输出缓存(包括页面级缓存和用户控件级缓存)和缓存API 。在本文 中,我们将讨论输出缓存。输出缓存的优点是易于实现,并在大多数情况下是足够的。它只是在内存中保 存了发送给客户端输出和后续请求答辩书的副本,然后用缓存的输出,直到缓存过期的反应,然后,直到 缓存过期,后续的请求响应缓存输出。这令人难以置信的提高ASP.NET Web应用程序的性能。
对于ASP.NET输出缓存,ASP.NET使用@ OutputCache指令,宣布许多属性来控制ASP.NET页或页面上的 用户控件的 输出缓存的策略。
代码
<%@ OutputCache Duration="#ofseconds"
Location="Any | Client | Downstream | Server | None | ServerAndClient "
Shared="True | False"
VaryByControl="controlname"
VaryByCustom="browser | customstring"
VaryByHeader="headers"
VaryByParam="parametername"
VaryByContentEncoding="encodings"
CacheProfile="cache profile name | ''"
NoStore="true | false"
SqlDependency="database/table name pair | CommandNotification"
%>
在本文中,我们将介绍@ OutputCache的 Duration, VaryByCustom, VaryByParam, 和VaryByControl 属性来缓存我们的页面输出 ,对于其它属性,您可以参考:http://msdn.microsoft.com/en- us/library/hdxfb6cy.aspx.
下面演练一步一步如何使用它们。在演示中,我们使用的日期时间,以确定页面是否被缓存。(在页面 加载事件中,我们将日期时间写在一个名字为“lblResult”的控件中)