快速业务通道

ASP.NET 2.0数据教程之五十八:用ObjectDataSource缓存数据

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
aSourceSelectingEventArgs e)
{
   ODSEvents.Text = "-- Selecting event fired";
}

每当ObjectDataSource开始检索数据时,Label控件都会显示文本 “Selecting event fired”.

在浏览器访问该页面。当首次登 录时,文本“Selecting event fired”就会显示出来。点 “Postback”按钮时,我们注意到文本消失了(前提是你将GridView的 EnableViewState属性设置为默认值true)。这是因为当页面回传时,GridView通 过它的视图状态(view state)载入数据进行重建(reconstructed),因此不再需要 通过ObjectDataSource检索数据库来得到数据进行重建。然而,排序、分页、编 辑等都会促使GridView重新绑定到数据源,因此,文本“Selecting event fired”又出现了。

ASP.NET 2.0数据教程之五十八:用ObjectDataSource缓存数据

图9:当GridView重新绑定到数据源时,显示文本“Selecting event fired”

ASP.NET 2.0数据教程之五十八:用ObjectDataSource缓存数据

图10:点“Postback” 按钮导致GridView从视图状态 “View State”获取数据

每次分页、排序时都需要从数据库检 索数据,这看起来有点浪费资源。即便GridView不支持排序和分页,任何人每次第 一次登录页面时都需要从数据库检索数据(如果将view state设置为disabled的话 ,每次页面回转也会检索数据)。如果GridView对所有用户显示的数据都是一样话 ,那么额外的数据库查询是浪费。我们可以对GetProducts()方法返回的数据进行 缓存,再将GridView绑定到这些缓存数据。

第四步:用ObjectDataSource 缓存数据

仅仅简单的设置某些属性,我们就可以让ObjectDataSource对它 的检索数据自动的进行缓存。以下总结了ObjectDataSource控件的与缓存相关的 属性:

EnableCaching—必须设置为true,默认为 false.

CacheDuration—缓存时间,以秒为单位。默认为0,只有当 EnableCaching属性设置为true,且CacheDuration设为大于0的值时 ObjectDataSource控件才会缓存数据。

CacheExpirationPolicy—可 设置为Absolute 或 Sliding。如果为Absolute,当它设为多少秒时, ObjectDataSource就会对检索的数据缓存多少秒;如果为Sliding,当它设为多少 秒时,一旦超过那么多秒没有对缓存数据进行访问,就终止缓存。默认为 Absolute。

CacheKeyDependency—用该属性将ObjectDataSource的 缓存条目(entry)与现有的缓存从属体关联起来。利用可以它将缓存条目提前从内 存清除掉。绝大多数情况下用该属性把SQL cache dependency与 ObjectDataSource的缓存关联起来。这个话题我们将在后面的教程《Using SQL Cache Dependencies》考察。

让我们设置ID为ProductsDataSource的 ObjectDataSource 的数据缓存时间为30秒。设其EnableCaching属性为true;设 其CacheDuration属性为30;CacheExpirationPolicy属性为默认的Absolute。

ASP.NET 2.0数据教程之五十八:用ObjectDataSource缓存数据

图11:设置ObjectDataSource的缓存时间为30秒

保存你的设置 ,并在浏览器里查看。当你第一次登录页面时,文本“Selecting event fired”会显示出来,因为原始数据还未缓存。但你点 “Postback”按钮,或进行分页,排序,或点编辑、取消按钮时,文 本“Selecting event fired”就不会显示出来了。原因是只有当 ObjectDataSource控件检索数据时才会触发Selecting事件;如果 ObjectDataSource控件是从缓存里面获取数据的话就不会触发Selecting事件。

过了30秒后,数据将从内存清除;或者调用ObjectDataSource控件的 Insert, Update,或Delete方法的话数据也会被清除掉。因此,过了30秒后或点击 “Update”按钮,编辑,取消按钮,或排序、分页的话就会促使 ObjectDataSource检索数据,触发Selecting事件,文本“Selecting event fired”又会显示出

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号