现在的位置: 首页 >> 网站编程 >> ASP.NET >> ASP.NET 2.0 中改进的缓存功能
添加时间:2005-8-16 来源:网教中国 作者: Stephen Walther
ASP.NET 2.0 中改进的缓存功能

    
  Stephen Walther
  
  Microsoft Corporation
  
  适用于:
  
  Microsoft ASP.NET 2.0
  
  Microsoft ASP.NET Framework
  
  Microsoft SQL Server
  
  Microsoft Visual Studio .NET
  
  摘要:本文中,Stephen Walther 将重点介绍 ASP.NET 2.0 中新增的缓存功能,以及如何使用这些新功能改进 ASP.NET 应用程序的性能和可扩展性。(本文包含一些指向英文站点的链接。)
  
  
  
  本页内容
   更轻松的数据缓存
   使用 SQL Cache Invalidation
   使用 Post-Cache Substitution
   结论
  
  对于由数据库驱动的 Web 应用程序来说,要改进其性能,最好的方法就是使用缓存。从数据库中检索数据可能是您在 Web 站点上执行的最慢的操作之一。如果能够将数据库中的数据缓存到内存中,就无需在请求每个页面时都访问数据库,从而可以大大提高应用程序的性能。
  
  缓存有一个且只有一个缺点,那就是数据过期的问题。如果将数据库表的内容缓存到内存中,当基础数据库表中的记录发生更改时,您的 Web 应用程序将显示过期的、不准确的数据。对于某些类型的数据,即便显示的数据稍微有些过期,影响也不会太大;但对于诸如股票价格和竞拍出价之类的数据,即使显示的数据稍微有些过期也是不可接受的。
  
  Microsoft ASP.NET 1.0 Framework 没有针对此问题提供一个完善的解决方案。使用 ASP.NET 1.0 Framework 时,您不得不在性能和数据过期之间作出权衡。幸运的是,Microsoft ASP.NET 2.0 Framework 提供了一项新功能,称为 SQL Cache Invalidation,可以解决这一棘手的问题。
  
  在本文中,您将进一步了解 ASP.NET 2.0 Framework 中许多新的缓存改进功能。首先,您将了解到如何在新增的 DataSource 控件中集成缓存支持。然后,您将了解到如何配置和使用 SQL Cache Invalidation。最后,您将了解到随 ASP.NET 2.0 Framework 引入的一个新控件:Substitution 控件,使用该控件可以向已缓存的页面中插入动态内容。
  
  更轻松的数据缓存
  在 ASP.NET 2.0 Framework 中,最大的变化之一就是在 ASP.NET 页面上访问数据库数据的方式发生了变化。ASP.NET 2.0 Framework 包含一组新的控件,统称为 DataSource 控件。您可以使用这些控件来表示数据源,例如数据库或 XML 文件。
  
  在 ASP.NET 1.0 Framework 中,是通过将控件绑定到 DataSet 或 DataReader,使用控件来显示数据库数据的。而在 ASP.NET 2.0 Framework 中,通常是将控件绑定到 DataSource 控件。通过 DataSource 控件,您可以创建显示数据库数据的 ASP.NET 页面,而不用为访问数据库编写任何代码。
  
  在处理数据库数据时,通常使用下列三个 DataSource 控件中的一个控件:
  
  • SqlDataSource — 表示 SQL 数据源,例如 Microsoft SQL Server 或 Oracle 数据库。
  
  • AccessDataSource — 一个专用的 SqlDataSource 控件,用于 Microsoft Access 数据库。
  
  • ObjectDataSource — 表示充当数据源的自定义业务对象。
  
  
  例如,假设您要在 DropDownList 控件中显示从数据库中检索到的书目列表(参见图 1)。列表 1 中的页面说明了如何将 DropDownList 控件绑定到 SqlDataSource 控件。
  
  图 1:使用 SqlDataSource 控件检索数据
  
  
  列表 1:DisplayTitles.aspx
  
  
  
  Display Titles
  
  
  

  
    ID="DropDownList1"
  DataSourceId="SqlDataSource1"
  DataTextField="Title"
  Runat="server" />
  
    ID="SqlDataSource1"
  ConnectionString="Server=localhost;database=Pubs"
  SelectCommand="SELECT Title FROM Titles"
  Runat="server" />
  
  
  
  
  
  请注意,列表 1 中的 SqlDataSource 控件用于提供连接字符串,SQL SELECT 命令用于从数据库中检索记录。DropDownList 控件通过其 DataSourceID 属性绑定到 SqlDataSource 控件。
  
  使用 DataSource 控件缓存数据
  使用 DataSource 控件,不仅可以更轻松地连接数据库,还使缓存数据库数据变得更容易。只需在 SqlDataSource 控件上设置一两个属性,就可以自动在内存中缓存由 DataSource 控件表示的数据。
  
  例如,如果要将 Titles 数据库表在内存中缓存至少 10 分钟,可以按照以下方式声明 SqlDataSource 控件。
  
     ID="SqlDataSource1"
  EnableCaching="true"
  CacheDuration="600"
  ConnectionString="Server=localhost;database=Pubs"
  SelectCommand="SELECT Title FROM Titles"
  Runat="server" />
  
  如果 EnableCaching 属性的值为 true,SqlDataSource 将自动缓存通过 SelectCommand 检索到的数据。使用 CacheDuration 属性,可以指定从数据库中刷新数据之前缓存数据的时间(以秒为单位)。
  
  默认情况下,SqlDataSource 使用绝对过期策略来缓存数据,即每隔指定的秒数就从数据库中刷新一次。此外,您还可以选择使用可变过期策略。如果将 SqlDataSource 配置为使用可变过期策略,那么只要持续访问数据,数据就不会过期。如果需要缓存大量项目,使用可变过期策略将非常有用,因为这种过期策略将只在内存中保留访问最频繁的项目。
  
  例如,下面的 SqlDataSourceControl 被配置为使用可变过期策略,过期时间为 10 分钟。
  
    ID="SqlDataSource1"
  EnableCaching="true"
  CacheExpirationPolicy="Sliding"
  CacheDuration="600"
  ConnectionString="Server=localhost;database=Pubs"
  SelectCommand="SELECT Title FROM Titles"
  Runat="server" />
&nbs

[1] [2] [3] [4] [5] [6]  下一页


上一篇:ASP.NET 2.0中的登陆控件简介(3) 下一篇:不用SQL语句查询DataTable中的数据
大部分文章摘自网上,如有侵犯您的权益请与我们联系,我们会第一时间进行处理,谢谢! [ 打印文章 ] [ 关闭窗口 ]
推荐文章
·ASP.NET 2.0中构造个性化网页
·利用 ASP.NET 的内置功能抵御 We
·提高ASP.Net应用程序性能的十大(
·不用SQL语句查询DataTable中的数
·基于C#的接口基础教程之六(5)
·ASP.NET应用程序规划与设计(1)
·ASP.NET可交互式位图窗体设计(5)
·ASP.NET虚拟主机的重大安全隐患(
·在网页中动态的生成一个gif图片
·改写即时消息的发送,包含同时给
相关文章
·ASP.NET 2.0中的登陆控件简介(3
·ASP.NET 2.0中的登陆控件简介(2
·ASP.NET 2.0中的登陆控件简介(1
·ASP.NET 2.0,无刷新页面新境界
·ASP.NET 2.0 中的SqlCacheDepend
·学了一段时间的Asp.Net 2.0后,
·ASP.NET 2.0里轻松获取数据库连
·asp.net 2.0中用GRIDVIEW插入新
·在ASP.NET 2.0中使用页面导航控
·asp.net 2.0中一次性更新所有GRI
最新文章
·《ASP.NET网站建设专家》目录
·《ASP.NET网站建设专家》前言
·用ASP.NET在同一网页中显示主从
·ASP.NET 如何操作文件
·ASP.NET 2.0中构造个性化网页
·利用 ASP.NET 的内置功能抵御 We
·.text urlRewrite介绍
·ASP.NET中为DataGrid添加合计字
·用 WebClient.UploadData 方法
·ASP.NET Cache
Google