qlDataSource 控件缓存数据javascript
SqlDataSource 控件可对它检索过的数据进行缓存,这样能够避免再次运行资源消耗量较大的查询,从而提升应用程序的性能。缓存主要用于数据变化不频繁的状况。html
此外,当经过 System.Data.SqlClient 提供程序使用 SqlDataSource 控件时,能够使用 SqlCacheDependency 对象。这样可以使 SqlDataSource 控件仅在 SelectCommand 返回的数据在数据库中被修改时才刷新缓存。java
当 SqlDataSource 控件的 DataSourceMode 属性设置为 DataSet 时,该控件可对数据进行缓存。默认状况下并未启用缓存,但能够经过将 EnableCaching 属性设置为 true 来启用缓存。web
将基于一个时间间隔对缓存数据进行刷新。能够将 CacheDuration 属性设置为刷新缓存以前要等待的秒数。SqlDataSource 控件为每一个 ConnectionString、SelectCommand 和 SelectParameters 值的组合维护一个单独的缓存项。sql
经过设置 CacheExpirationPolicy 属性,能够进一步控制 SqlDataSource 缓存的行为。Absolute 值会在超过 CacheDuration 值时强制刷新缓存。将 CacheExpirationPolicy 属性设置为 Sliding,则仅在从最后一次访问缓存项起超过 CacheDuration 值以后才对缓存进行刷新。数据库
下面的代码示例演示一个 SqlDataSource 控件,该控件配置为每 20 秒刷新一次数据:c#
SqlDataSource 控件支持基于 SqlCacheDependency 对象的可选过时策略。能够使用 SqlCacheDependency 对象来确保仅在修改了数据库中的源表时才对缓存数据进行刷新。为了使用 SqlCacheDependency 对象,必须为数据库服务器运行 Microsoft SQL Server 通知服务。缓存
若是数据源是 SQL Server 7.0 或更高版本,经过将 SqlDataSource 控件的 SqlCacheDependency 属性设置为由链接字符串和表标识符组成的字符串(形式为“ConnectionString:Table”),能够使用 SqlCacheDependency 对象对数据库进行轮询以检查更改。若是 SqlCacheDependency 涉及多个表,则链接字符串和表名称对以分号分隔,以下面的示例所示:服务器
“ConnectionString1:Table1;ConnectionString2:Table2”。ide
若是数据源是 Microsoft SQL Server 2005,则还能够选择让 SQL Server 向应用程序通知更改,而不用轮询检查更改。经过将 SqlCacheDependency 属性设置为字符串“CommandNotification”,能够使用该通知模型。有关 SqlCacheDependency 对象的更多信息,请参见使用 SqlCacheDependency 类在 ASP.NET 中缓存。
下面的代码示例演示如何建立 Microsoft SQL Server 缓存依赖项,以及如何设置 SqlDataSource 控件的 SqlCacheDependency 属性。在该示例中,每 120 秒对数据库进行一次轮询。若是在这段时间内 Northwind Employees 表中的数据发生更改,则下次对数据库进行轮询时将对由 SqlDataSource 控件缓存和 GridView 控件显示的数据进行刷新。