深入剖析ASP.NET 2.0缓冲机制

缓冲功能是开发人员构建ASP.NET 2.0 Web应用程序的重要关注点之一。本文试图通过三个示例页面全面剖析ASP.NET 2.0提供的新的缓冲机制。

一、简介

ASP.NET 1.x Cache API是一种革命性特征。当一个XML文件或另一个缓冲项的内容改变时,Cache API提供了诸如声明性输出缓冲、以编程方式控制输出缓冲以及使缓冲项无效等能力。尽管这大大改进了Web应用程序的性能,但遗憾的是,ASP.NET 1.x并没有提供一种机制来实现当数据库中的数据改变时使一个缓存对象中的数据无效。最终,在ASP.NET 2.0中加入了这一特征。此外,ASP.NET 2.0还提供了特定功能用于缓冲一个SqlDataSource控件的输出—你可以充分利用缓冲优点而不用编写一行代码。本文中,让我们共同讨论这些新的缓冲特征,以及如何把它们应用于自己的Web应用程序。

在ASP.NET 2.0中,缓冲以多种方式加以改进。也许最引人瞩目的改进是引入了数据库触发的缓存无效机制。在ASP.NET 1.x中,你能够基于一些预定义条件(例如一个XML文件中的改变,在另一个缓存项中的改变等)来使一个缓冲项无效。借助于这一特征,当数据或另一个缓冲项改变时,你可以删除或从缓存中使该项无效。然而,当一个SQL Server数据库中的数据改变时,ASP.NET 1.x Cache API并不允许你使缓存中的一个项成为无效的,尽管大多数应用程序都要求具有这种能力。相比之下,ASP.NET 2.0则特别重视这一点—通过提供数据库触发的缓存无效功能,它使你确保缓存中的项与数据库中的改变保持同步更新。

ASP.NET 2.0另一个重要的缓冲特征是能够在SqlDataSource级上支持缓冲。该SqlDataSource控件能够操作SQL Server、OLEDB、ODBC和Oracle数据库等多种数据库,而且支持你使用SQL命令选择、更新、删除和插入数据。现在,借助于在SqlDataSource控件级上设置缓冲属性的能力,你可以更为细致地控制缓冲的数据。

ASP.NET 2.0还提供一个新的Substitution控件,你能够使用它来把动态的内容注入到另一个缓冲的Web页面中。如果你有一个启动了输出缓冲功能的页面但是仍然想显示动态的内容(这需要在每次请求该页面时重新生成)的话,那么你可以考虑使用该Substitution控件。

下列几节中,我将详细分析上面的特征并提供相关的示例。

【提示】本文中提供了三个简单但完整的aspx页面源码,我使用Visual Studio 2005在一个简单web工程Caching中分别试验,并用浏览器预览这三个页面。至于如何建立工程与SQL Server 2005/2000/7.0示例数据库Northwind的连接,在此略过。

二、在SqlDataSource控件中实现基于时间的缓存无效

ASP.NET缓冲是一种能够改进Web应用程序性能的重要特征。事实上,改进一个数据库驱动的Web应用程序性能的最显著的方法正体现在对缓冲机制的巧妙把握上。在绝大多数情况下,从数据库中检索数据成为你能够实现的最慢的网站操作之一。然而,如果你能够在内存中恰当地缓存数据库数据并且尽可能在每一次页面请求时避免访问数据库,那么你一定能够显著地改进你的应用程序的性能。

ASP.NET 2.0提供了比ASP.NET 1.x更强的缓冲特征。其中,一个新的特征是,它能够把caching属性指定为数据源控件声明的一部分。ASP.NET 2.0中的这个新的数据源控件能够“无缝”地利用ASP.NET 2.0新的缓冲特征特征,从而使你能够把caching属性设置为SqlDataSource控件声明的一部分。

典型地,你可以通过设置SqlDataSource控件中的下列两个属性来支持缓冲:

◆EnableCaching—通过把这个属性设置为true,你可以启动一个SqlDataSource控件的缓冲功能。

◆CacheDuration—这个属性允许你设置或得到SqlDataSource控件中的缓冲数据的持续时间(这个属性以秒为单位指定)。

时间: 2024-09-24 00:29:31

深入剖析ASP.NET 2.0缓冲机制的相关文章

一起谈.NET技术,ASP.NET 4.0 一些隐性的扩展

ASP.NET 4.0在很多方面都做了改进,在这篇ASP.NET 4.0白皮书就描述了很多ASP.NET 4.0的机制改变和改进.在我的博客中,也有几篇关于ASP.NET4.0的特性修改的文章.但是作为一个全新的框架和运行时,内部肯定还会有很多API和扩展点不会暴露的那么明显.比如今天从这篇文章Three Hidden Extensibility Gems in ASP.NET 4的介绍中,我又了解了一些在我平常开发中绝对非常有用的扩展点. PreApplicationStartMethodAt

ASP.NET 4.0 一些隐性的扩展

ASP.NET 4.0在很多方面都做了改进,在这篇ASP.NET 4.0白皮书就描述了很多ASP.NET 4.0的机制改变和改进.在我的博客中,也有几篇关于ASP.NET4.0的特性修改的文章.但是作为一个全新的框架和运行时,内部肯定还会有很多API和扩展点不会暴露的那么明显.比如今天从这篇文章Three Hidden Extensibility Gems in ASP.NET 4的介绍中,我又了解了一些在我平常开发中绝对非常有用的扩展点. Pre ApplicationStartMethodA

ASP.NET 2.0发送电子邮件全面剖析之二

asp.net 一.简介 在上篇中我们详细分析过,.NET框架2.0版本提供了一个新的命名空间(System.Net.Mail)和一些发送电子邮件的新类(注意:.NET框架1.x版本中提供的命名空间System.Web.Mail及相关的类仍然可以使用,以实现向后兼容性).而且,我们还详细分析过如何使用System.Net.Mail命名空间中的MailMessage和SmtpClient类来发送简单的普通文本格式的电子邮件消息. 本篇将讨论与电子邮件相关的更高级的选项.我们要分析如何发送HTML格

ASP.NET 2.0中发送电子邮件剖析之一

asp.net 一.简介 如今,电子邮件已经成为一种无所不在.异步通知和分布式的消息系统.存在许多web开发场所:其中,服务器端代码都需要生成一个电子邮件并且把它发送给指定的接收者.该电子邮件可以被发送给网点中的一些用户,通知他们有关于他们的新建用户帐户,提醒他们忘记的口令,或以邮件形式提交给他们一个清单.当然,这也可以是针对web开发者或站点管理员,提供给他们有关一个刚刚公开的未处理的异常或用户回馈的消息. 幸好,ASP.NET使得发送电子邮件非常轻松..NET框架版本1.x在System.W

剖析ASP.NET2.0导航功能之控制地图信息

asp.net|控制       一. 简介 任何由多个页面组成的网站都需要某种导航用户接口,这是用两步来创建的.首先,必须定义站点的逻辑结构:然后,添加用户接口元素来允许用户在站点结构的各个部分之间来回移动.在ASP.NET 2.0以前,要求开发者自己来解决这两个问题.然而,到了版本2.0以后,ASP.NET提供了一个简单的方法来定义一站点的结构并且包括大量的Web控件-专门设计来显示站点导航用户接口. 在上一篇中我们分析了怎样通过导航Web控件来创建Web.sitemap XML站点地图文件

ASP.NET 2.0实现AJAX的Web开发

ajax|asp.net|web [导读]在过去的几个月中,基于AJAX技术开发高度交互的Web应用程序的设计模式迅速流行开来.现在,具有高度可配置性的Web应用程序,例如Google Maps和A9,都在综合利用这些技术来创造丰富的客户端用户体验.其实,结合AJAX技术进行Web开发并非最近的研究成果,只不过这些技术一直以来不断得到持续更新和改进. 本文中我有三个目的.首先,我想提供一个AJAX风格应用程序的高级概述.其次,我想详细地描述ASP.NET 2.0的异步回调机制.最后,我想对构建A

ASP.NET 2.0的页面缓存功能介绍

asp.net|缓存|页面 页面部分缓存是指输出缓存页面的某些部分,而不是缓存整个页面内容.实现页面部分缓存有两种机制:一种是将页面中需要缓存的部分置于用户控件(.ascx文件)中,并且为用户控件设置缓存功能(包含用户控件的ASP.NET页面可设置也可不设置缓存).这就是通常所说的"控件缓存".设置控件缓存的实质是对用户控件进行缓存配置.主要包括以下3种方法:一是使用@ OutputCache指令以声明方式为用户控件设置缓存功能,二是在代码隐藏文件中使用PartialCachingAt

跳出封装剖析ASP.NET脚本回调的原理

asp.net|封装|脚本      [注:此段与标题内容无关,可略过] 在看完两集Stargate并且洗了一个澡之后,我终于决定要开始写这篇文章.这是我第一篇真正意义上的原创技术文章,不管技术含量如何,我总算是迈出了这一步.博客其实开过不少,从最早的校园大巴,到博客园,以及我那个用来发牢骚的新浪博客,其实开博客最初的目的就是用来在写程序的同时,记录一下自己的学习的过程.但是后来演变成了用来发牢骚的东西,这也算是我一直以来不能专心钻研的恶果吧,不过所谓亡羊补牢为时未晚,就从这篇文章开始,变得专注

探讨ASP.NET 2.0中的Web控件改进技术

asp.net|web|控件 ASP.NET 2.0并没有抛弃1.1版本中的任何现有控件,而是增加了一组新的控件;同时还引入了若干新的控件开发技术.本系列文章将对这些内容展开全面探讨. 一. 引言 到目前为止,你可能已经了解了大量的ASP.NET 2.0新特征-母版页面,主题,提供者,等等--所有这样内容都相当精彩;但是,你是否了解到有关定制Web控件开发方面的重大变化?这正是我在本文中所想讨论的.如果你已经从事于控件开发,那么,我想本文所描述的ASP.NET 2.0中的新的改进特征会立即应用于