1、第 11章 提高 ASP.NET应用程序 的 性能* 111.1 缓存 技术n 页面输出缓存 n 页面数据缓存 n 页面部分缓存 n System.Web.Caching命名空间 Date 211.1.1 页面输出缓存 n 页面输出缓存是把一次请求所产生的动态输出保存于内存中。在一个负担很重的站点,即使将一个经常被访问的页面缓存很短的时间,都可以带来性能上很大的提高。当使用输出缓存时,后继的对页面的请求将直接从内存中取出页面而不重新创建页面 。Date 311.1.2 页面数据缓存 n 页面数据缓存是传统的应用程序缓存技术,可以使用它以编程方式将任意对象(例如数据集)存储到服务器内存,这样应用
2、程序可以节省重新创建这些对象所需的时间和资源。 ASP.NET提供了一个相当出色的缓存引擎机制,它允许页面保存和索引 HTTP请求所要求的各种各样的对象。 ASP.NET的缓存对各个应用来说是私有的,是存储各种对象的存储器。页面数据缓存是由 Cache类实现的, Cache对象是每个应用程序专用的,其生存期依赖于该应用程序的生存期。当重新启动应用程序时,将重新创建其 Cache对象的实例。 ASP.NET允许根据外部文件、目录或另一个缓存项定义缓存项的有效性。这些叫做文件依赖项和键依赖项。如果依赖项更改,则缓存项失效并被从 Cache中移除。Date 411.1.3 页面部分缓存 n 有时候实
3、际情况不允许缓存整个页面,部分的页面必须根据每次请求来创建。在这种情况下,可以使用部分缓存技术来缓存那些可以缓存的部分。页面部分缓存技术对用户控件实行缓存,同时需要使用 OutputCache指令,定义客户控件的缓存策略。Date 511.1.4 System.Web.Caching命名空间n System.Web.Caching命名空间提供用于缓存服务器上常用数据的类,其中包括 Cache 和CacheDependency类 。Date 611.2提高数据库相关应用程序的性能n 优化数据库设计n 优化查询n 优化代码设计 Date 711.2.1 优化数据库设计n 逻辑设计:数据库的逻辑设计
4、主要指表、关系以及约束等数据库对象的定义和设计。一般来说,良好的数据库逻辑设计至少应该满足数据库设计理论的前三个范式,即第一范式(没有重复的组或多值的列),第二范式(每个非键字段须依赖于主键,不能依赖于组合主键的某个组成部分)和第三范式(一个非键字段不能依赖于另一个非键字段)。n 物理设计:优化数据库的物理设计是指尽可能快地对数据进行物理访问和维护,这涉及到磁盘系统、对象、索引等。例如使用磁盘阵列可以有效的提高数据访问速度,或者可以把一个被频繁访问的很大的数据表分割成几个较小的表,放在多个单独的智能型磁盘控制器的数据库设备上,这样也可以提高性能。因为有多个磁头在查找,所以数据分离也能提高性能。
5、Date 811.2.2 优化查询n 使用数据库的存储过程,不仅可以避免多次对命令的编译,而且可以独立于程序,便于修改。使用存储过程还可以减少网络中的数据传输,进一步的提高性能 。n 使用带有参数的 SQL命令n 当查询多个数据表时,要遵守一个原则:先过滤后连接。Date 911.2.3 优化代码设计n ADO.NET为数据库应用程序的性能提供了很好的支持,例如采用池连接可以显著提高应用程序的性能。应用程序中经常有多个用户执行相同类型的数据库访问,例如显示某个表中的全部数据。如果为每个用户打开单独的连接,那么会造成必要要的资源浪费。此时,可以通过共享到数据源的连接来提高应用程序的性能,也就是使用池连接。当到数据源的连接打开时, .NET Framework数据提供程序会创建和连接匹配的一个连接池。连接池是为每个惟一的连接字符串创建的。如果相同的连接被打开,那么该连接使用同一个连接池。Date 10