ASP.NET揭秘读书笔记之十——使用DataSource缓存

     引言

     除了在页面或用户控件级别进行缓存外,也可以在数据源控件层面进行缓存。所有三个标准的数据源控件——SqlDataSource、ObjectDataSource和XmlDataSource控件都包含了用于缓存DataSource承载的数据属性。

    使用绝对缓存过期策略

Code


      使用Sliding缓存过期策略
      如果需要缓存大量数据,则使用sliding过期策略比绝对缓存过期要更合理。当使用sliding缓存过期策划时,除非数据在指定时间内再次被请求,否则缓存就会失效。

 

Code

 

      使用ObjectDataSource控件缓存
     ObjectDataSource控件支持和SqlDataSource控件一样的缓存属性。可以通过设置ObjectDataSource的EnableCaching、CacheDuration和CacheExpirationPolicy(可选)属性来缓存数据。

Code


    上面代码中ObjectDataSource控件包含一个Selecting事件的事件处理函数。该事件处理函数在一个Label控件显示一个消息。因为Selecting事件在数据从缓存中取得的是不触发的,可以用该事件来判断数据是从缓存还是从Movie组件获得的。

 

Code

 

      使用XmlDataSource控件缓存
      该控件默认启用缓存,并且自动和承载它的数据的XML文件创建一个文件依赖。XML文件修改,则该控件自动重新载入修改过的XML文件。


 

Code


      创建数据源控件键值依赖
      可以在数据源控件和应用程序的一个缓存项目之间建立一个键值依赖。这样修改数据后删除了该缓存项目,对应的数据源控件会自动载入修改后的数据。

Code

    注意上面的代码清单中的SqlDataSource控件包含了一个CacheKeyDependency属性,值为Moviekey。该属性在数据源控件缓存的数据和名为Moviekey的缓存项目之间建立了一个依赖。

    下面所示的Global.asax创建了初始化的Moviekey缓存项目。

 

Code

    下面代码中,当插入一条新记录时,Moviekey项目会重新传入缓存中,此时,每一个依赖于这个键值的DataSource会自动载入更改后的数据。

 

Code



 

你可能感兴趣的:(dataSource)