ASP编程模型包括了Application对象,它能够让开发人员将简单数据类型和COM对象放置到Web服务器的内存里,这样它们就可以从任何页面被访问到,而不管是不是当前的用户。尽管ASP的Application对象保留了它在ASP.NET里的原有功能,但是它并没有System.Web.Caching命名空间里的类那样灵活。现在让我们来看看一些常见的缓冲情况,并学习一下.NET的缓冲类可以如何被用来提高你Web网站的性能。
使用Application对象进行ASP缓冲
在这种情况下,Connect对象会在Web应用程序第一次被访问到的时候初始化,并将对所有页面一直保持可用,直到Web服务器被停止。此外,保存在应用程序对象里的变量可能会被Lock和Unlock方法锁定和解锁,使其免受并发访问所导致的错误的影响。
ASP.NET的替换方案
.NET的缓冲类提供了对ASP.NET缓冲引擎的访问,这样就能从多方面提高性能,包括缓冲用于整个页面、一部分页面(指的是片段缓冲),甚至个体对象的HTML输出。通过使用缓冲引擎,你可以让被缓冲的项目自动过期,自动地定义依赖其他项目的缓冲项目,甚至是自动地安装回收信号,这样你的代码在项目从缓冲区中被清除的时候就能得到通知了。
现在让我们来看看两个简单但是有效的例子,通过它们来说明缓冲引擎的声明和程序控制。
声明式缓冲
假设你有一个ASP.NET的Web网站,它要调用第三方的XML Web服务来取回一些信息,并且将其显示在网站的主页上。在这种情况下,你可以对来自Web用户控制的HTML输出进行片段缓冲,Web用户的控制才是真正调用Web服务并格式化返回的XML的东西。将OutputCache指令加入到Web用户控制的HTML里就可以实现这一点,如下所示: