数据源控件和缓存

数据源控件和缓存

    数据源控件可以检索将提供给应用程序中其他组件的数据。当多个页面需要访问该信息时,最新的缓存可以提供快得多的响应。ASP.NET Cache对象是存储内存中数据的首选位置。您可以指示SqlDataSource控件在特定时间内缓存查询的结果,但前提是数据源模式为DataSet。

    默认情况下,在SqlDataSource控件中禁用缓存,但您可以通过将EnableCaching属性设置为真来启用缓存。您还应该赋予CacheDuration属性一个非零值。CacheDuration属性指示数据源内容在内存中保留的时间长度(秒)。下面的代码显示了一个SqlDataSource控件,它缓存的数据每五分钟(300秒)就会过期:

<asp:SqlDataSource
    runat="server"
    ConnectionString="..."
    SelectCommand="SELECT * FROM products"
    EnableCaching="true"
    CacheDuration="300"
/>

    默认情况下使用绝对过期策略,但您可以通过设置CacheExpirationPolicy将控件配置为使用可调整策略。针对每个缓存参数、连接字符串和SelectParameters与SelectCommand值的组合,都创建了唯一的缓存密钥。该缓存密钥随后被散列,以保护用于生成它的源数据。

    SqlDataSource控件还支持一种基于其内容与SQL Server数据库中的某个表之间的逻辑依赖项集合的缓存过期形式。用于实现此功能的类是SqlCacheDependency。该功能有两个不同的实现—一个用于SQL Server 2005,一个用于SQL Server 2000和SQL Server 7.0。这两个实现彼此完全独立。目前,您可以通过SqlDataSource控件访问的其他数据关系存储区不支持该功能。

    在SQL Server 7.0和SQL Server 2000中,依赖项被指定为“数据库:表”格式的字符串属性。该字符串的数据库部分必须引用在web.config文件的新区段下面列出的数据库,而表部分必须是该数据库中的表的名称。您可以通过用分号分隔来指定多个表依赖项,如下面的示例所示:

<asp:SqlDataSource
    runat="server"
    ConnectionString="..."
    SelectCommand="sp_getdata"
    SqlCacheDependency="pubs:Authors;pubs:TitleAuthor"
    EnableCaching="true"
    CacheDuration="300"
/>

    对Authors或TitleAuthor表进行任何更改以后,都将自动使数据源控件通过sp_getdata存储过程检索到的缓存内容无效。数据库中的更改可以使缓存中的某些值无效的可能性在Web场方案中尤其有用—此时,一台计算机上的更新可以自动强行刷新所有其他计算机的数据。

 

你可能感兴趣的:(数据源控件和缓存)